Как получить все имена параметров параметров и значения в форме, представленной с помощью ajax в весной MVC? - PullRequest
0 голосов
/ 13 октября 2011

Я отправляю форму весной g MVC, используя ajax. Форма генерируется динамически. Следовательно, я не знаю имен параметров запроса, представленных в форме.

В простой форме (не Ajax) я использовал для получения всех имен параметров и их значений, используя следующий код

Enumeration requestParameters = request.getParameterNames();
while (requestParameters.hasMoreElements()) {
    String element = (String) requestParameters.nextElement();
    String value = request.getParameter(element);
}

Но тот же код не работает, когда я отправляю форму, используя ajax. Ниже приведен код, который я использую для отправки формы с использованием ajax.

$.post("saveEntity", function() {
     alert("SUCCESS");
});

И ниже мой метод класса контроллера, который вызывается при отправке формы.

@RequestMapping(method = RequestMethod.POST, value = "/saveEntity")
public @ResponseBody
void saveEntity( HttpServletRequest request) {

    Enumeration requestParameters = request.getParameterNames();

    while (requestParameters.hasMoreElements()) {
        String element = (String) requestParameters.nextElement();
        String value = request.getParameter(element);

        if (element != null && value != null) {
            logger.info("param Name : " + element
                    + " value: " + value);

        }
    }

}

Есть ли что-то, что я делаю неправильно или что-то упускаю? Пожалуйста помоги.

Ответы [ 2 ]

1 голос
/ 13 октября 2011

Я начну с проверки того, что отправляется на сервер, либо просмотрите запрос на сетевой панели firebug, либо используйте fiddler и убедитесь, что данные отправляются правильно.

XMLHttpRequest мониторинг http://getfirebug.com/network

Редактировать

Вы не отправляете никаких данных вместе с вашим $ .post.

$.post({
       url: "saveEntity", 
       data: $('form').serialize(),
       success: function(data) {
                    alert("SUCCESS");
                }
       });

Редактировать 2

Убедитесь, что $ ('form') фактически выбирает форму, которую вы хотите опубликовать. Если нет, укажите правильный селектор jquery, указав идентификатор формы. Как только правильная форма выбрана, используйте alert($('form').serialize());, чтобы убедиться, что она возвращает данные в этом формате {elementname1: elementvalue, elementname2: elementvalue2}. Если нет, то убедитесь, что элементам присвоен атрибут name.

0 голосов
/ 13 октября 2011

если вы используете jquery, вы можете использовать

alert($('form').serialize());

чтобы получить строку запроса

...