2013-09-17 2 views
1

Я использую dijit/form/Form, чтобы содержать мои входы, а затем сталкиваться с проблемой при попытке отправить dijit/form/Form, когда у меня есть кнопка отправки в этой форме, она может быть отправлена ​​успешно, но перенаправлена ​​на другую страницу (Spring MVC действует на стороне сервера) и если я удалю эту кнопку отправки, я не знаю, как получить входные данные этой формы.Как получить входные данные в dijit/form/Form?

Если есть какой-либо метод для dijit/form/Form, чтобы получить его входные данные, чтобы я мог его отправить.

Спасибо.

+0

ли вы использовать собственные элементы формы (только простые элементы ввода) или 'dijit/form' (например,' dijit/form/TextBox', ...)? – g00glen00b

+0

Мои входные данные в форме - все виджеты dijit. –

ответ

1

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 формы.

Это означает, что вы можете либо пройти domnode своего виджета dijit/form/Form, либо полностью пропустить эту часть и просто получить доступ к узлу DOM напрямую.

xhr.post("mySubmitUrl", { 
    data: domForm.toObject(registry.byId("myForm").domNode) 
}).then(function() { 
    console.log("Success"); 
}); 

Пример JSFiddle можно найти here.


Теперь на стороне сервера (Spring), вы просто добавить метод, который будет обрабатывать этот конкретный запрос, например:

@RequestMapping(value = "mySubmitUrl", method = RequestMethod.POST) 
public void doPostForm(@RequestParam("name") String name, @RequestParam("firstname") String firstname) { 
    // Do stuff 
} 
+0

Эй, @ Димитрий М Я действительно ценю ваш очень полезный ответ. Да, я решил свою проблему по вашему ответу. Благодаря!!! –

0

Вы можете использовать JQuery AJAX вызова и внутри данных, которые можно передать значения в формате JSON и страницы успеха и ошибки, чтобы проверить, если успех загрузите блок в соответствии с вашими требованиями и ошибки в случае тайм-аут или другие ошибки