zoukankan      html  css  js  c++  java
  • jQuery $.ajax传递数组的traditional参数传递必须true 对象的序列化

    设置jQuery 的 traditional参数 实际上是设置 jQuery.param 的traditional 参数,默认为false,当设置为true后,会导致多层次的对象序列化为[object object](浅序列化)

    当提交的参数是数组( {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

    http://blog.csdn.net/ojackhao/article/details/24580437

    param() 方法创建数组或对象的序列化表示。

    http://www.w3school.com.cn/jquery/ajax_param.asp

    该序列化值可在进行 AJAX 请求时在 URL 查询字符串中使用。

    语法

    jQuery.param(object,traditional)
    object要进行序列化的数组或对象
    traditional规定是否使用传统的方式浅层进行序列化(参数序列化)。



     1 <html>
     2 <head>
     3 <script type="text/javascript" src="/jquery/jquery.js"></script>
     4 <script type="text/javascript">
     5 $(document).ready(function(){
     6   personObj=new Object();
     7   personObj.firstname="Bill";
     8   personObj.lastname="Gates";
     9   personObj.age=60;
    10   personObj.eyecolor="blue"; 
    11   $("button").click(function(){
    12     $("div").text($.param(personObj));
    13   });
    14 });
    15 </script>
    16 </head>
    17 <body>
    18 
    19 
    20 <button>序列化对象</button>
    21 <div></div>
    22 </body>
    23 </html>
    //输出结果
    firstname=Bill&lastname=Gates&age=60&eyecolor=blue

    serialize() 方法通过序列化表单值,创建 URL 编码文本字符串。

    http://www.w3school.com.cn/jquery/ajax_serialize.asp

    您可以选择一个或多个表单元素(比如 input 及/或 文本框),或者 form 元素本身。

    序列化的值可在生成 AJAX 请求时用于 URL 查询字符串中。

    .serialize() 方法创建以标准 URL 编码表示的文本字符串。它的操作对象是代表表单元素集合的 jQuery 对象。

    .serialize() 方法可以操作已选取个别表单元素的 jQuery 对象,比如 <input>, <textarea> 以及 <select>。不过,选择 <form> 标签本身进行序列化一般更容易些:

    注释:只会将”成功的控件“序列化为字符串。如果不使用按钮来提交表单,则不对提交按钮的值序列化。如果要表单元素的值包含到序列字符串中,元素必须使用 name 属性。

     1 <html>
     2 <head>
     3 <script type="text/javascript" src="/jquery/jquery.js"></script>
     4 <script type="text/javascript">
     5 $(document).ready(function(){
     6   $("button").click(function(){
     7     $("div").text($("form").serialize());
     8   });
     9 });
    10 </script>
    11 </head>
    12 <body>
    13 <form action="">
    14 First name: <input type="text" name="FirstName" value="Bill" /><br />
    15 Last name: <input type="text" name="LastName" value="Gates" /><br />
    16 </form>
    17 
    18 <button>序列化表单值</button>
    19 <div></div>
    20 </body>
    21 </html>

    结果

    1 1 FirstName=Bill&LastName=Gates 

    serializeArray() 方法通过序列化表单值来创建对象数组(名称和值)。

    http://www.w3school.com.cn/jquery/ajax_serializearray.asp

    您可以选择一个或多个表单元素(比如 input 及/或 textarea),或者 form 元素本身。

    语法

    $(selector).serializeArray()

    详细说明

    serializeArray() 方法序列化表单元素(类似 .serialize() 方法),返回 JSON 数据结构数据。

    注意:此方法返回的是 JSON 对象而非 JSON 字符串。需要使用插件或者第三方库进行字符串化操作。

    返回的 JSON 对象是由一个对象数组组成的,其中每个对象包含一个或两个名值对 —— name 参数和 value 参数(如果 value 不为空的话)。举例来说:

    [ 
      {name: 'firstname', value: 'Hello'}, 
      {name: 'lastname', value: 'World'},
      {name: 'alias'}, // 值为空
    ]
    

    .serializeArray() 方法使用了 W3C 关于 successful controls(有效控件) 的标准来检测哪些元素应当包括在内。特别说明,元素不能被禁用(禁用的元素不会被包括在内),并且元素应当有含有 name 属性。提交按钮的值也不会被序列化。文件选择元素的数据也不会被序列化。

    该方法可以对已选择单独表单元素的对象进行操作,比如 <input>, <textarea>, 和 <select>。不过,更方便的方法是,直接选择 <form> 标签自身来进行序列化操作。

    $("form").submit(function() {
      console.log($(this).serializeArray());
      return false;
    });
    

    上面的代码产生下面的数据结构(假设浏览器支持 console.log):

    [
      {
        name: a
        value: 1
      },
      {
        name: b
        value: 2
      },
      {
        name: c
        value: 3
      },
      {
        name: d
        value: 4
      },
      {
        name: e
        value: 5
      }
    ]
    
  • 相关阅读:
    sql 语句系列(加减乘除与平均)[八百章之第十四章]
    并发系列64章(并发概要)第一章
    redis 一百二十篇(简单介绍)之第一篇
    sql 语句系列(分割ip)[八百章之第十四章]
    sql 语句系列(字符串之裂开)[八百章之第十三章]
    sql 语句系列(字符串之父与子之间)[八百章之第十二章]
    sql 语句系列(字符串的遍历嵌入删除与统计)[八百章之第十一章]
    sql 语句系列(用魔法打败魔法)[八百章之第十章]
    sql 语句系列(列举非索引外键)[八百章之第九章]
    sql 语句系列(列举系列)[八百章之第八章]
  • 原文地址:https://www.cnblogs.com/linsx/p/6801751.html
Copyright © 2011-2022 走看看