时间:2021-05-26
今天重温了一个问题,jQuery.ajax向后台传递一个数组,而在后台接收不到该值。
前台js方法部分代码如下:
//创建一个测试数组var boxIds = new Array();boxIds.push(12182);boxIds.push(12183);boxIds.push(12184);//向后台交互$.ajax({ url: "/xxx", type: "GET", data: { "boxIds": boxIds, "boxType": 0, "time": new Date().getTime() }, success: function(data) { //do sth... }});后台controller代码(SpringMVC)
@ResponseBody@RequestMapping(value = "/box/changeLock")public String changeLock(final Long[] boxIds, final int boxType) { return locker_ChangeLockService.changeLock(boxIds, boxType);}观察浏览器中发送的请求,可以发现参数如下:
可以看到,参数的名字为boxIds[]而不是我们所定义的boxIds,也就是说,当传递数组时,会在我们的数组名称后自动加上”[]”,所以后台接不到。
解决办法:
设置jQuery.ajax的tradional属性
$.ajax({ url: "/xxx", type: "GET", data: { "boxIds": boxIds, "boxType": 0, "time": new Date().getTime() }, traditional: true,//这里设置为true success: function(data) { //do sth... }});修改之后重新发出请求,观察浏览器:
请求参数2
这次参数不带”[]”了,并且后台可以成功接收到该数组。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
jQuery的ajax和遍历数组json实例代码jQuery.ajax({type:"POST",url:"server.json",dataType:'jso
ajax操作全局监测,用户session失效的解决方法jQuery(function($){//备份jquery的ajax方法var_ajax=$.ajax;/
Jquery的$.ajax的用法:jQuery.ajax(options):通过HTTP请求加载远程数据,这个是jQuery的底层AJAX实现。简单易用的高层实
jquery:向后台提交数组varresArray=newArray(1,2,3);$.post(prefix+'/save/res/',{'roleID':$
$.post、$.get是一些简单的方法,如果要处理复杂的逻辑,还是需要用到jQuery.ajax()一、$.ajax的一般格式$.ajax({type:'PO