jQuery ajax的traditional参数的作用

简介: 设置 traditional:true,当不用traditional的时候,发现后台无法获取selectUsers的值,那么可以肯定的是traditional默认值是false.当提交的参数是数组( {selectUsers:[value,value,value]} ),如果是false的话,则...
设置 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。 Set this to true if you wish to use the traditional style of param serialization

 

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

 

即 设置

  traditional: true,可以定义不让其深度解析

 

相关文章
|
2月前
|
前端开发 JavaScript
杨校老师课堂之基于Servlet整合JQuery中的Ajax进行表单提交[基于IDEA]
杨校老师课堂之基于Servlet整合JQuery中的Ajax进行表单提交[基于IDEA]
29 0
杨校老师课堂之基于Servlet整合JQuery中的Ajax进行表单提交[基于IDEA]
|
2天前
|
前端开发 JavaScript Java
SpringBoot+JQuery+Ajax实现表单数据传输和单文件或多文件的上传
关于如何在SpringBoot项目中结合JQuery和Ajax实现表单数据的传输以及单文件或多文件上传的教程。文章提供了完整的前后端示例代码,包括项目的`pom.xml`依赖配置、SpringBoot的启动类`App.java`、静态资源配置`ResourceConfig.java`、配置文件`application.yml`、前端HTML页面(单文件上传和多文件上传加表单内容)以及后端控制器`UserController.java`。文章最后展示了运行结果的截图。
5 0
SpringBoot+JQuery+Ajax实现表单数据传输和单文件或多文件的上传
|
2天前
|
XML JSON 前端开发
AJAX是什么?原生语法格式?jQuery提供分装好的AJAX有什么区别?
AJAX是什么?原生语法格式?jQuery提供分装好的AJAX有什么区别?
7 0
|
3天前
|
JavaScript 前端开发
Ajax的使用(jquery的下载)
这篇文章是关于Ajax学习笔记的分享,包括JQuery的下载方式、Ajax的主要参数说明,以及如何在网页中使用Ajax进行异步请求的示例代码。
|
29天前
|
XML JSON 前端开发
ajax中各个参数的含义是什么?
实际上,jQuery的 `$.ajax()` 方法支持比这个列表更多的参数,但这些是最常用的。请根据您的特定需求灵活配置这些参数。了解每个参数的作用和可接受的值对于有效地使用AJAX非常关键,能够帮助您建立健壮的交互式网页应用。
19 0
|
2月前
|
JavaScript 前端开发 安全
安全开发-JS应用&原生开发&JQuery库&Ajax技术&加密编码库&断点调试&逆向分析&元素属性操作
安全开发-JS应用&原生开发&JQuery库&Ajax技术&加密编码库&断点调试&逆向分析&元素属性操作
|
3月前
|
前端开发 JavaScript PHP
【PHP开发专栏】jQuery与PHP实现Ajax通信
【4月更文挑战第30天】本文介绍了使用jQuery和PHP实现Ajax通信的步骤。首先,讲解了Ajax的基础和jQuery简化Ajax操作的概念。接着,展示了如何使用jQuery的`$.get()`、`$.post()`和`$.ajax()`方法发送GET和POST请求,以及如何控制请求细节。在PHP端,讨论了接收和响应Ajax请求的方法,包括处理数据、设置响应类型和错误处理。结合jQuery与PHP,开发者能实现高效、无缝的异步数据传输,提升Web应用的用户体验。
66 1
|
3月前
|
JSON 前端开发 JavaScript
jQuery ajax读取本地json文件 三级联动下拉框
jQuery ajax读取本地json文件 三级联动下拉框
|
3月前
|
XML JSON 前端开发
ajax中各个参数的含义是什么?
ajax中各个参数的含义是什么?
N..
|
3月前
|
XML JSON 前端开发
jQuery实现Ajax
jQuery实现Ajax
N..
48 1