如何将数组作为(jquery)ajax请求的一部分发送

我尝试发送一个数组作为ajax请求的一部分,如下所示:

var query = []; // in between I add some values to 'query' $.ajax({ url: "MyServlet", data: query, dataType: "json", success: function(noOfResults) { alert(noOfResults); } }); } 

我想看看我在servlet中得到什么,所以我使用了这一行:

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

返回{}表示空地图。

Firebug告诉我,我收到400 bad request错误

如果我发送一个像attribute=value这样的queryString作为’data’,那么一切正常,所以它与无法按原样发送数组有关。 我需要做些什么才能将这些数据导入servlet以进行进一步处理。 如果我可以避免它,我不想把它拉出来并把它变成JS中的queryString。

编辑:我在发送数据之前使用了.serializeArray()(jQuery)函数。 我没有获得400,但没有任何有用的东西被发送。

您必须发送一个首先使用JSON.stringify进行字符串化的对象。

像这样:

 var query = []; // in between I add some values to 'query' $.ajax({ url: "MyServlet", data: JSON.stringify({ nameParameter: query }) dataType: "json", success: function(noOfResults) { alert(noOfResults); } }); } 

只是尝试将数据作为名称/值对发送(这是预期的)。 喜欢

 var query = ["data1","data2"]; // in between I add some values to 'query' $.ajax({ url: "MyServlet", data: {'query' : query}, success: function(noOfResults) { alert(noOfResults); } }); } 

您应该像这样在服务器端获取数据

 query => Array ( [0] => data1 [1] => data2 ) 

根据jQuery文档进行jQuery.Ajax()方法的data设置

如果value是一个数组,jQuery会根据传统设置的值使用相同的键序列化多个值