失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 数组类型参数传递问题:$.ajax传递数组的traditional参数传递必须true

数组类型参数传递问题:$.ajax传递数组的traditional参数传递必须true

时间:2021-05-23 15:43:56

相关推荐

数组类型参数传递问题:$.ajax传递数组的traditional参数传递必须true

数组类型参数传递问题:$.ajax传递数组的traditional参数传递必须true

转载自:/goloving/p/7676811.html

数组类型参数传递:

若一个请求中包含多个值,如:(test.action?tid=1&tid=2&tid=3),参数都是同一个,只是指定多个值,这样请求时后台会发生解析错误,应先使用 tradititonal 格式化

$.ajax({type:"post",url:"test.action",data:{tid:[1,2,3]},traditional:true,……});

起初我认为traditional:true,可有可无,但是后来不用traditional的时候,发现后台无法获取selectUsers的值,那么可以肯定的是traditional默认值是false。

当提交的参数是数组( {selectUsers:[value,value,value]} ),如果是false的话,则提交时会是"selectUsers[]=value&selectUsers[]=value";如果设置成true,则提交时会是"selectUsers=value&selectUsers=value",这样后台就能用String[] ids=request.getParameterValues("selectUsers"); 获取到值

官方文档的解释如下:traditional 类型:Boolean

如果你想要用传统的方式来序列化数据,那么就设置为 true。(底层原理其实就是设置param()方法的traditional参数为true

Set this to true if you wish to use the traditional style of param serialization

1、前台jquery

function deleteAll() {var selectUsers=new Array();//var selectUsers = null;$(":checkbox[name='userID']").each(function() {if ($(this).prop("checked"))selectUsers.push($(this).val());//selectUsers += "," + $(this).val();});$.ajax({async : false,traditional:true,type:"post",url:"elecUserAction_delete.do",data:{selectUsers:selectUsers},success:function(responsText){if(responsText=="1"){alert("删除成功");}}});}

2、后台Action代码

public String delete(){String[] ids=request.getParameterValues("selectUsers"); System.out.println(ids.toString());PrintWriter out = null;out.write("1");return home();}

总结:

当ajax传的data数据是数组时,必须设置traditional参数,并为true,然后后台才可以通过request.getParameterValues()方法获取到数据,否则会解析出错。

如果觉得《数组类型参数传递问题:$.ajax传递数组的traditional参数传递必须true》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。