$ .post()一个到Servlet的javascript数组

时间:2012-01-13 10:27:48

标签: java jquery ajax

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

我的javascript看起来像这样:

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

在我的servlet中:

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

输出:

  

{模式=插入}

我也试过

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

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

3 个答案:

答案 0 :(得分:5)

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

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

请注意,客户端arrayData参数没有括号。

在服务器上:

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

这对我有用!

答案 1 :(得分:0)

尝试使用

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

并在服务器上

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

答案 2 :(得分:0)

以下是我使用json2.js中的here将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
    }
});