如何将数组作为(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会根据传统设置的值使用相同的键序列化多个值