`
Folyred
  • 浏览: 58166 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类

jQuery ajax的traditional参数的作用

阅读更多

一般的,可能有些人在一个参数有多个值的情况下,可能以某个字符分隔的形式传递,比如页面上有多个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

 

分享到:
评论
2 楼 Fs_sky 2014-07-15  
不错,学习了!
1 楼 javaloverZY 2012-12-09  
        

相关推荐

    jquery.ajax 传参数到mvc的action

    本篇文章将深入探讨如何使用jQuery的ajax方法向ASP.NET MVC的Action传递参数。 首先,了解jQuery的ajax方法的基本结构。这是一个示例: ```javascript $.ajax({ url: 'yourUrl', type: 'POST', // 或 'GET' ...

    jQuery中通过ajax调用webservice传递数组参数的问题实例详解

    ### jQuery中通过ajax调用webservice传递数组参数的问题实例详解 在Web开发中,经常会遇到需要通过异步JavaScript和XML(AJAX)技术与服务器端的WebService进行通信,并传递数据的场景。当需要传递数组参数给...

    jQuery.Ajax()的data参数类型详解

    在jQuery的Ajax方法中,`data`参数是一个非常关键的部分,它用于传递要发送到服务器的数据。本篇文章将深入探讨`data`参数的不同类型及其使用方法。 首先,`data`参数可以接受多种类型的数据,包括JavaScript对象、...

    使用jQuery处理AJAX请求的基础学习教程

    使用jQuery处理AJAX请求,不仅可以简化代码,还能提高开发效率。本教程将从基础知识开始,逐步引导读者深入理解使用jQuery处理AJAX请求的方法和技巧。 首先,我们需要了解jQuery中处理AJAX请求的基本语法。jQuery...

    Spring MVC不能直接接收list类型参数的问题

    在 AJAX 请求中添加 `traditional: true` 参数,以确保数组类型的参数被正确地序列化并发送给服务器。 **示例代码**: ```javascript $.ajax({ url: "xxxx", traditional: true, data: { areaList: ["123", "456...

    jQuery1.9.1源码分析系列(十六)ajax之ajax框架

    3. `jQuery.param(serializeArray, traditional)`:将键值对数组转换为URL编码的字符串。 `serializeArray`函数的源码实现通常包括三个阶段: 1. 提取表单元素,获取所有相关表单控件。 2. 过滤出满足提交条件的...

    JQuery.Ajax()的data参数类型实例详解

    在jQuery AJAX请求中,data参数的处理和格式转换是开发过程中频繁遇到的问题。通过理解和运用 serializeArray()和$.param()方法,开发者可以有效解决数据组织和发送的问题,提高AJAX请求的效率和可靠性。需要注意的...

    JQuery中Ajax()的data参数类型实例分析

    总结来说,JQuery中的Ajax `data`参数可以接受多种类型的输入,包括但不限于JavaScript对象、URL编码的字符串,甚至可以是已经序列化的JSON数组。`serializeArray()`和`$.param()`这两个辅助方法可以帮助我们方便地...

    jQuery 1.6 中文API (适用jQuery 1.6,jQuery 1.6.1,jQuery 1.6.2)

    Ajax交互方面,`$.ajax()`方法在1.6版本中增加了`traditional`选项,允许开发者在JSON序列化时选择传统模式,这在处理复杂数据结构时非常有用。此外,`$.getJSON()`和`$.getScript()`等辅助方法也得到了增强,提供了...

    jQuery Ajax使用FormData上传文件和其他数据后端web.py获取

    jQuery的$.ajax方法与第一种方法类似,但要注意的是,append方法的第二个参数为文件对象,而第一个参数为键值对的键名。 在web.py后端代码中,处理方式与第一种方法相同,通过web.input()方法读取上传的文件和其他...

    jQuery中文文档1.8和1.4的chm文档

    1. **$.ajax()** 方法的增强:增加了`traditional`选项,用于控制数据序列化的方式,使传统数组或对象格式的处理更为灵活。 2. **$.Callbacks()** 的新功能:回调函数队列的管理得到了优化,可以添加、移除、清空或...

    jQuery.ajax向后台传递数组问题的解决方法

    为了解决这个问题,jQuery提供了传统方式(traditional)的参数序列化方式。通过将传统方式设置为true,jQuery不会按照默认的方式处理数组或对象,而是按照传统的序列化方式,即不会自动在数组或对象属性名后添加方...

    jquery.param.patch.zip

    页面上jQuery需要把一个复杂类型的javascript数组对象作为参数传到Struts2 action,但是他们的默认格式不匹配导致action无法正确获得参数。 Struts2 action class SomeAction{ List<SomeBean> list; //getter...

    jQuery 1.5 API 中文版

    strjQuery.param( obj, [traditional] ) Utilities Browser and Feature Detection objjQuery.support objjQuery.browserdeprecated strjQuery.browser.versiondeprecated booljQuery.boxModeldeprecated Basic ...

    jquery 1.8 api

    1. `$.ajax()`: 在jQuery 1.8中,`$.ajax()`方法得到了全面的更新,添加了更多的选项以增强灵活性。比如,`traditional`参数允许开发者在处理数据时选择传统的数组或JSON格式。此外,`beforeSend`和`complete`回调...

    JQuery UI插件的 API.pdf

    然而,这里主要讨论的是与 AJAX 相关的 jQuery API,这些 API 在异步数据交互和页面局部更新中起着关键作用。 AJAX(Asynchronous JavaScript and XML)是一种创建动态网页的技术,允许在不刷新整个页面的情况下与...

    jQuery 1.5

    - **$.ajax()**:增加了一些新的选项,如`dataType`、`cache`、`traditional`等,增强了对Ajax请求的控制。 - **$.when()**:配合Deferred对象,用于管理多个异步操作,当所有操作完成时触发回调函数。 - **$....

    jquery1.4 教程二 ajax方法的改进

    如果出于某种原因需要使用旧的序列化方式,则可以通过设置jQuery.ajaxSettings.traditional为true,或者在调用$.ajax时,将traditional参数设置为true,或者使用jQuery.param函数并传递true作为第二个参数。...

Global site tag (gtag.js) - Google Analytics