2012-01-13 62 views
4

我正在使用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"}); 

​​

回答

3

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

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

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

在服务器:

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

这为我工作!

0

尝试使用

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

和服务器

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

为了这个工作,参数映射会打印出类似'{mode = insert,[email protected]}'或类似的东西。该servlet根本没有收到'arrayData'参数,作为字符串或字符串数​​组或任何其他类型的对象。 – bdares 2012-01-14 14:33:28

+0

根据我的经验,这是行不通的。 – 2012-02-04 12:57:01

0

这是我如何通过JSON来我的servlet,使用json2.jshere 。在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 
    } 
});