如何使用 jQuery $.ajax 将请求参数数组发送到 servlet?
Posted
技术标签:
【中文标题】如何使用 jQuery $.ajax 将请求参数数组发送到 servlet?【英文标题】:How to send request parameter array to servlet using jQuery $.ajax? 【发布时间】:2012-10-25 20:28:35 【问题描述】:我想使用 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");
它返回空值。
如何访问这些值?
【问题讨论】:
data 是一个 JSON 对象,所以它必须像 data: name value pair, where value could be a object 我在任何地方都没有看到你定义了一个名为 json 的参数,所以我不确定你为什么会期望 getParameter("json") i> 返回 null 以外的任何内容。 您是否要发布到服务器端文件?例如将数据存储在数据库中? 【参考方案1】:将数组作为 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 友好。
【讨论】:
在服务器端犯了错误你可能不得不使用.. request.getParameterValues("json[]"); 感谢您的回答。很有帮助!【参考方案2】:您必须将数组转换为 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....
)
【讨论】:
【参考方案3】:尝试使用以下脚本 -
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
【讨论】:
【参考方案4】:您需要像这样发布您的 javascript 数据对象..
http://api.jquery.com/jQuery.post/
$.post("test.php", name: "John", time: "2pm" ,
function(data)
alert("Data Loaded: " + data);
);
【讨论】:
以上是关于如何使用 jQuery $.ajax 将请求参数数组发送到 servlet?的主要内容,如果未能解决你的问题,请参考以下文章
如何:正确使用PHP将数据编码成JSON格式,并通过jquery/ajax请求数据
如何在 jQuery 中使用 Ajax 请求发送 FormData 对象? [复制]
如何在 jQuery 中使用 Ajax 请求发送 FormData 对象? [复制]