【问题标题】:$.post() a javascript array to Servlet$.post() 一个 JavaScript 数组到 Servlet
【发布时间】:2012-01-13 10:27:47
【问题描述】:

我正在使用 JQuery 的 post(),但我的 servlet 没有看到我作为参数传递的数组。

我的 javascript 看起来像这样:

var myArray = ['1', '2'];
$.post('action.do', {"arrayData":myArray, "mode":"insert"});

在我的 servlet 中:

System.out.println(request.getParameterMap());

哪个输出:

{mode=insert}

我也试过

$.post('action.do', {"arrayData[]":myArray, "mode":"insert"});

$.post('action.do', {"arrayData":$(myArray).serializeArray(), "mode":"insert"});

【问题讨论】:

    标签: java jquery ajax


    【解决方案1】:

    我遇到了这个问题。我只是通过在“arrayData”参数服务器端添加括号来解决它。在客户端:

    $.post('action.do', {arrayData:myArray, mode:"insert"});
    

    请注意,在客户端 arrayData 参数不带括号。

    在服务器上:

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

    这对我有用!

    【讨论】:

      【解决方案2】:

      尝试使用

      $.post('action.do', {"arrayData":myArray, "mode":"insert"});
      

      在服务器上

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

      【讨论】:

      • 为此,参数映射将打印类似{mode=insert, arrayData=java.lang.String@3sD39} 或类似的东西。 servlet 根本不接收 arrayData 参数,作为字符串或字符串数​​组或任何其他类型的对象。
      【解决方案3】:

      这是我如何使用来自herejson2.js 将json 传递给我的servlet。然后,在 servlet 中,您可以使用 gsonjackson 自动将您的 json 自动转换为合适的 java 类的实例。

      var jsonData = $("#myform").toObject();
      var strJson = JSON.stringify(jsonData);
      $.ajax({
        cache:false,
        type: 'POST',
        url: myUrl,
        data:strJson,
        contentType: "application/json",
        success:  function(data) {            
                //mySuccessHanlder
          }
      });
      

      【讨论】:

        猜你喜欢
        • 2014-05-12
        • 2019-08-23
        • 2011-09-04
        • 2011-12-08
        • 1970-01-01
        • 1970-01-01
        • 2015-01-29
        • 2022-01-18
        • 2016-09-23
        相关资源
        最近更新 更多