Как получить входные данные в dijit/form/Form?
Использует dijit/form/Form
содержать мои входные данные, а затем возникают проблемы, когда я пытаюсь отправить dijit/form/Form
, когда у меня есть кнопка отправки в этой форме, она может быть успешно отправлена, но перенаправить на другую страницу (Spring MVC
действует на стороне сервера), и если я удаляю эту кнопку отправки, я не знаю, как получить данные этой формы.
Если есть какой-либо метод для dijit/form/Form
чтобы получить его входные данные, чтобы я мог представить его.
Благодарю.
2 ответа
dijit/form/Form
содержит несколько утилит, которые работают с виджетами формы Dijit (dijit/form/TextBox
, dijit/form/Select
...) Я не знаю, используете ли вы их или нет, но ответ очень похож с или без. Идея состоит в том, чтобы сериализовать вашу форму в объект и отправить ее с помощью вызовов AJAX.
С виджетами формы Dijit
Если вы используете виджеты формы Dijit, вы можете сериализовать всю форму, используя getValues()
на вашем виджете формы. Это будет сериализовать форму для вас:
xhr.post("mySubmitUrl", {
data: registry.byId("myForm").getValues()
}).then(function() {
console.log("Success");
});
Я также сделал JSFiddle, чтобы продемонстрировать это.
С родными элементами формы
Если вы используете собственные элементы формы, у вас нет преимуществ использования dijit/form/Form
, Для сериализации формы вы можете использовать функцию toObject()
от dojo/dom-form
модуль. Эта функция требует, чтобы вы передали узел формы DOM.
Это означает, что вы можете либо передать домнод вашего dijit/form/Form
виджет, или полностью пропустить эту часть и просто получить доступ к узлу DOM напрямую.
xhr.post("mySubmitUrl", {
data: domForm.toObject(registry.byId("myForm").domNode)
}).then(function() {
console.log("Success");
});
Пример JSFiddle можно найти здесь.
Теперь на стороне сервера (Spring) вы просто добавляете метод, который будет обрабатывать этот конкретный запрос, например:
@RequestMapping(value = "mySubmitUrl", method = RequestMethod.POST)
public void doPostForm(@RequestParam("name") String name, @RequestParam("firstname") String firstname) {
// Do stuff
}
Вы можете использовать вызов jquery ajax, а внутри данных вы можете передать значения в JSON и страницу успеха и ошибки, чтобы проверить, успешен ли, а затем загрузить блок в соответствии с вашими требованиями и ошибки, если тайм-аут или другие ошибки