使用jquery传递时,在JSP中读取JSON对象时出错

时间:2012-08-01 09:38:48

标签: jquery json jsp

我想在jquery中创建一个json对象并在jsp中处理它并以json格式返回。 我创建了一个json对象并发布到jsp文件:

$.post("processDropDown.jsp", $('#fields tr td input').serializeArray(),
function(data) {
alert(data);
});

在jsp文件中,我读取参数并放入jsonobject,但返回了json exception-null对象异常。

JSONObject inp = new JSONObject();
Enumeration enumeration = request.getParameterNames();
try {
    while (enumeration.hasMoreElements()) {
        String parameterName = (String) enumeration.nextElement();
        out.print("\nParameter = " + parameterName+"\n");
        inp = inp.getJSONObject(request.getParameter(parameterName));
        out.print("::" + inp.toString());
    }
} catch(Exception ex) {
    out.print(ex);
}

JSON.stringify()方法在将其传递给jsp之前在客户端中返回以下输出。

JSON.stringify($('#fields tr td input').serializeArray());

[{"name":"valueField","value":"12"},{"name":"textField","value":"Twelve"},{"name":"valueField","value":"34"},{"name":"textField","value":"ThirtyFour"}]

1 个答案:

答案 0 :(得分:2)

更改

$.post("processDropDown.jsp", 
   $('#fields tr td input').serializeArray(),
   function(data) {
      alert(data);
   }
);

$.post("processDropDown.jsp", 
   JSON.stringify($('#fields tr td input').serializeArray()),
   function(data) {
      alert(data);
   }
);

您发布了一个Object Literal而不是JSON。好读了Object vs JSON here

请注意.serializeArray()文档:

  

.serializeArray()方法创建一个 JavaScript对象数组,可以编码为JSON字符串。它在表示一组表单元素的jQuery对象上运行。

强调我的......