【问题标题】:How to send array to servlet with ajax如何使用ajax将数组发送到servlet
【发布时间】:2013-01-26 21:18:57
【问题描述】:

必须使用 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中try接收数组中包含的值如下

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

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

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

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

【问题讨论】:

    标签: ajax arrays servlets send


    【解决方案1】:

    您在开发这个时似乎考虑到了 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[]");
    

    【讨论】:

    • 您好 BalusC,感谢您的帮助。发生的事情是 mapTest 中包含的值只是我给出的一个例子。我有一个动态创建我的 mapTest 的函数。这个功能可以看这里pastebin.com/Hhz9s0GE
    • 所以,我不知道mapTest中会包含多少个值。此外,我打算将密钥与 Servlet 的值一起发送。并用这些值(key, values)用它在java中构造一个Map。
    • 只要走过getParameterMap()
    • 我会在 Servlet 中收到这个值吗?正如我通过 Ajax 发送的那样?没有 ajax 系列
      mapList1 = mapList
      e 没有 Servlet 系列 Map mapList = request.getParameterMap();如果不是这样,那会是这样吗?谢谢。
    猜你喜欢
    • 1970-01-01
    • 2012-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多