Как получить входные данные в 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 и страницу успеха и ошибки, чтобы проверить, успешен ли, а затем загрузить блок в соответствии с вашими требованиями и ошибки, если тайм-аут или другие ошибки

Другие вопросы по тегам