解决JavaScript中使用$.ajax方式提交数组参数
2016-07-27 12:59
411 查看
一般的,可能有些人在一个参数有多个值的情况下,可能以某个字符分隔的形式传递,比如页面上有多个checkbox:
然后后台获取参数后再分隔,这种做法有很大弊端,试问如果某一个参数值中出现了分隔符所使用的字符,会出现什么情况呢?当然后台获取的参数将与实际情况不符.
这时我想到了将上述代码写成这样:
如果单纯写成这样,在java和.net后台是无法取到参数的,因为jQuery需要调用jQuery.param序列化参数,
可以通过调试查看到这里传递数组参数名称会自动在原来名称后面添加[]。上面传递的参数名称为p[]
默认的话,traditional为false,即jquery会深度序列化参数对象,以适应如PHP和Ruby on Rails框架, 我们可以通过设置traditional 为true阻止深度序列化。
所以,比如我们前台有多个checkbox,前台的代码可以写成:
$.ajax{ url:"xxxx", data:{ p: "123,456,789" } }
然后后台获取参数后再分隔,这种做法有很大弊端,试问如果某一个参数值中出现了分隔符所使用的字符,会出现什么情况呢?当然后台获取的参数将与实际情况不符.
这时我想到了将上述代码写成这样:
$.ajax{ url:"xxxx", data:{ p: ["123", "456", "789"] } }
如果单纯写成这样,在java和.net后台是无法取到参数的,因为jQuery需要调用jQuery.param序列化参数,
jQuery.param( obj, traditional )
可以通过调试查看到这里传递数组参数名称会自动在原来名称后面添加[]。上面传递的参数名称为p[]
默认的话,traditional为false,即jquery会深度序列化参数对象,以适应如PHP和Ruby on Rails框架, 我们可以通过设置traditional 为true阻止深度序列化。
所以,比如我们前台有多个checkbox,前台的代码可以写成:
var values = $("input[type=checkbox]").map(function(){ return $(this).val(); }).get(); $.ajax{ url:"xxxx", traditional: true, data:{ p: values } }
相关文章推荐
- checkbox全选与反选
- JavaScript操作cookie
- JSON数据与XML数据各有哪些优缺点
- Javascript动画学习
- 客户端JavaScript-如何执行
- Arcgis api for JavaScript 跨域配置(在线编辑问题)
- 你真的了解JavaScript中的局部变量和全局变量吗?
- Ajax(2)--data format
- js实现textarea高度根据内容自适应
- JSON格式的时间/Date(2367828670431)/格式转为正常的年-月-日 格式的代码
- JavaScript事件委托的技术原理
- js实现textarea高度根据内容自适应
- js实现继承
- JS加密
- 关于JSON字符串的处理与总结 【原创】
- 淘宝一面 关于JavaScript中的事件代理(例子:ul中无数的li上添加点击事件)
- 获取JS中网页各种高宽与位置的方法总结
- 身份证正则验证Js
- 单个字符串转Json格式
- js中的继承