一般的,可能有些人在一个参数有多个值的情况下,可能以某个字符分隔的形式传递,比如页面上有多个checkbox:
$.ajax{
url:"xxxx",
data:{
p: "123,456,789"
}
}
然后后台获取参数后再分隔,这种做法有很大弊端,试问如果某一个参数值中出现了分隔符所使用的字符,会出现什么情况呢?当然后台获取的参数将与实际情况不符.
这时我想到了将上述代码写成这样:
$.ajax{
url:"xxxx",
data:{
p: ["123", "456", "789"]
}
}
如果单纯写成这样,在java后台是无法取到参数的,因为jQuery需要调用jQuery.param序列化参数,
jQuery.param( obj, traditional )
默认的话,traditional为false,即jquery会深度序列化参数对象,以适应如PHP和Ruby on Rails框架,
但servelt api无法处理,我们可以通过设置traditional 为true阻止深度序列化,然后序列化结果如下:
p: ["123", "456", "789"] => p=123&p=456&p=456
随即,我们就可以在后台通过request.getParameterValues()来获取参数的值数组了,
所以,比如我们前台有多个checkbox,前台的代码可以写成:
var values = $("input[type=checkbox]").map(function(){
return $(this).val();
}).get();
$.ajax{
url:"xxxx",
traditional: true,
data:{
p: values
}
}
代码是不是优美并且稳健了许多呢?
转:http://www.codeloger.com/?p=326
分享到:
相关推荐
本篇文章将深入探讨如何使用jQuery的ajax方法向ASP.NET MVC的Action传递参数。 首先,了解jQuery的ajax方法的基本结构。这是一个示例: ```javascript $.ajax({ url: 'yourUrl', type: 'POST', // 或 'GET' ...
### jQuery中通过ajax调用webservice传递数组参数的问题实例详解 在Web开发中,经常会遇到需要通过异步JavaScript和XML(AJAX)技术与服务器端的WebService进行通信,并传递数据的场景。当需要传递数组参数给...
在jQuery的Ajax方法中,`data`参数是一个非常关键的部分,它用于传递要发送到服务器的数据。本篇文章将深入探讨`data`参数的不同类型及其使用方法。 首先,`data`参数可以接受多种类型的数据,包括JavaScript对象、...
使用jQuery处理AJAX请求,不仅可以简化代码,还能提高开发效率。本教程将从基础知识开始,逐步引导读者深入理解使用jQuery处理AJAX请求的方法和技巧。 首先,我们需要了解jQuery中处理AJAX请求的基本语法。jQuery...
在 AJAX 请求中添加 `traditional: true` 参数,以确保数组类型的参数被正确地序列化并发送给服务器。 **示例代码**: ```javascript $.ajax({ url: "xxxx", traditional: true, data: { areaList: ["123", "456...
3. `jQuery.param(serializeArray, traditional)`:将键值对数组转换为URL编码的字符串。 `serializeArray`函数的源码实现通常包括三个阶段: 1. 提取表单元素,获取所有相关表单控件。 2. 过滤出满足提交条件的...
在jQuery AJAX请求中,data参数的处理和格式转换是开发过程中频繁遇到的问题。通过理解和运用 serializeArray()和$.param()方法,开发者可以有效解决数据组织和发送的问题,提高AJAX请求的效率和可靠性。需要注意的...
总结来说,JQuery中的Ajax `data`参数可以接受多种类型的输入,包括但不限于JavaScript对象、URL编码的字符串,甚至可以是已经序列化的JSON数组。`serializeArray()`和`$.param()`这两个辅助方法可以帮助我们方便地...
Ajax交互方面,`$.ajax()`方法在1.6版本中增加了`traditional`选项,允许开发者在JSON序列化时选择传统模式,这在处理复杂数据结构时非常有用。此外,`$.getJSON()`和`$.getScript()`等辅助方法也得到了增强,提供了...
jQuery的$.ajax方法与第一种方法类似,但要注意的是,append方法的第二个参数为文件对象,而第一个参数为键值对的键名。 在web.py后端代码中,处理方式与第一种方法相同,通过web.input()方法读取上传的文件和其他...
1. **$.ajax()** 方法的增强:增加了`traditional`选项,用于控制数据序列化的方式,使传统数组或对象格式的处理更为灵活。 2. **$.Callbacks()** 的新功能:回调函数队列的管理得到了优化,可以添加、移除、清空或...
为了解决这个问题,jQuery提供了传统方式(traditional)的参数序列化方式。通过将传统方式设置为true,jQuery不会按照默认的方式处理数组或对象,而是按照传统的序列化方式,即不会自动在数组或对象属性名后添加方...
页面上jQuery需要把一个复杂类型的javascript数组对象作为参数传到Struts2 action,但是他们的默认格式不匹配导致action无法正确获得参数。 Struts2 action class SomeAction{ List<SomeBean> list; //getter...
strjQuery.param( obj, [traditional] ) Utilities Browser and Feature Detection objjQuery.support objjQuery.browserdeprecated strjQuery.browser.versiondeprecated booljQuery.boxModeldeprecated Basic ...
1. `$.ajax()`: 在jQuery 1.8中,`$.ajax()`方法得到了全面的更新,添加了更多的选项以增强灵活性。比如,`traditional`参数允许开发者在处理数据时选择传统的数组或JSON格式。此外,`beforeSend`和`complete`回调...
然而,这里主要讨论的是与 AJAX 相关的 jQuery API,这些 API 在异步数据交互和页面局部更新中起着关键作用。 AJAX(Asynchronous JavaScript and XML)是一种创建动态网页的技术,允许在不刷新整个页面的情况下与...
- **$.ajax()**:增加了一些新的选项,如`dataType`、`cache`、`traditional`等,增强了对Ajax请求的控制。 - **$.when()**:配合Deferred对象,用于管理多个异步操作,当所有操作完成时触发回调函数。 - **$....
如果出于某种原因需要使用旧的序列化方式,则可以通过设置jQuery.ajaxSettings.traditional为true,或者在调用$.ajax时,将traditional参数设置为true,或者使用jQuery.param函数并传递true作为第二个参数。...