我想使用jQuery $.ajax
将JavaScript数组发送到servlet。
var json=[1,2,3,4];
$.ajax({
url:"myUrl",
type:"POST",
dataType:'json',
success:function(data){
// codes....
},
data:json
});
当我使用
时request.getParameter("json");
request.getParameterValues("json");
返回null。
如何访问这些值?
答案 0 :(得分:34)
将数组作为JS对象的值发送,因此最终为{json:[1,2,3,4]}
。
var json=[1,2,3,4];
$.ajax({
url:"myUrl",
type:"POST",
dataType:'json',
data: {json:json},
success:function(data){
// codes....
},
});
在servlet中,您需要使用[]
后缀请求参数名称。
String[] myJsonData = request.getParameterValues("json[]");
jQuery附加它们以便像PHP一样对weak typed languages友好。
答案 1 :(得分:0)
您必须将数组转换为JSON类型,而不是[]需要读取
var array = [ 1, 2, 3, 4 ];
要执行此操作,您需要致电
var json = JSON.stringify(array)
然后你可以将它传递给你的ajax调用
$.ajax({ url:"myUrl",
type:"POST",
data: json,
dataType:'json',
success:function(data){
// codes....
}})
答案 2 :(得分:0)
尝试使用以下脚本-
jQuery.ajax({
url : "your API",
type : "POST",
dataType:'json',
data: JSON.stringify({ jsonData: data }),
contentType: "application/json",
success : function(response) {
//do the needful.
},
error : function(jqXHR, textStatus,
errorThrown) {
var x = 1;
closeLoader();
}
});
按如下方式在控制器中处理请求-
@RequestMapping(value="your url", method = RequestMethod.POST)
public Map<String, Object> verifyRefundRequested(@RequestBody String data) throws UnsupportedEncodingException{
Map<String, Object> responseMap = null;
Gson g = new Gson();
responseMap = g.fromJson(data, Map.class);
List<String> s = (List<String>) responseMap.get("jsonData");
//iterate list and process
// return map
}
答案 3 :(得分:-1)
您需要发布这样的javascript数据对象..
http://api.jquery.com/jQuery.post/
$.post("test.php", { name: "John", time: "2pm" },
function(data) {
alert("Data Loaded: " + data);
});