0

我正在使用 ajax 在 spring g MVC 中提交表单。表格是动态生成的。因此我不知道表单中提交的请求参数的名称。

在一个简单的表单提交(不是 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);

        }
    }

}

有什么我做错或遗漏了什么吗?请帮忙。

4

2 回答 2

1

我将首先确保发送到服务器的内容,或者在 firebug 网络面板中查看请求,或者使用 fiddler 并确保数据被正确发送。

XMLHttpRequest 监控 http://getfirebug.com/network

编辑

您不会随 $.post 一起发送任何数据。

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

编辑 2

确保 $('form') 实际上正在选择您要发布的表单。如果没有,请通过指定表单 id 提供正确的 jquery 选择器。一旦选择了正确的形式,使用alert($('form').serialize());来确保它以这种格式返回数据{elementname1: elementvalue, elementname2: elementvalue2}。如果没有,请确保元素具有分配给它们的名称属性。

于 2011-10-13T10:36:06.273 回答
0

如果您使用的是 jquery,那么您可以使用

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

获取查询字符串

于 2011-10-13T10:24:01.693 回答