如何使用ajax将数组发送到servlet

时间:2013-02-11 17:46:02

标签: ajax arrays servlets send

必须使用ajax将数组发送到servlet,如下所示

// My array "mapTest"
var mapTest = {key1: ["a1", "a2", "a3"], key2: ["b1", "b2"]};
$.ajax({
    type: "POST",
    url: "assembles-query",
    data: {
    "mapList[]" : mapTest
  },
    error:function(){
    console.log("ERROR");
  },
    success:function(responseText){
    $("textarea[id=assembleQuery]").text(responseText);
  }
});

在servlet中尝试接收数组中包含的值,如下所示

String[] mapList = request.getParameterValues("mapList[]");

当我滚动浏览数组中包含的值时,总是返回 java.lang.NullPointerException

for (int i = 0; i < mapaList.length; i++) {
     System.out.println(mapList[i]);
}

我该怎么做才能解决这个问题?既然已经感谢大家的帮助了。

1 个答案:

答案 0 :(得分:0)

在开发这个时,你似乎已经考虑到了PHP。您似乎混淆了特定于PHP的功能,即将带有[]后缀的请求参数名称透明地转换为数组,因为它是特定于标准HTTP的内容。因此绝对不是这样。 HTTP没有这样的概念。紧密构建在HTTP之上的Servlet API根本不支持这种特定于PHP的功能。

在您的特定构造中,这些值可用作:

String[] key1values = request.getParameterValues("mapList[][key1][]");
String[] key2values = request.getParameterValues("mapList[][key2][]");

请注意,如果你摆脱了笨拙的mapList[]包装,它会更好:

data: mapTest

这将使值可用:

String[] key1values = request.getParameterValues("key1[]");
String[] key2values = request.getParameterValues("key2[]");