JQuery.Ajax()的data参数类型大总结

 使用AJAX提交表单参数的各种方式表单如下:

<form id='form1'>
    <input type='checkbox' name='hobby' value='0'>
    <input type='checkbox' name='hobby' value='1'>
    <input type='checkbox' name='hobby' value='2'>
    <input type='radio' name='gender' value='0'  checked='checked'>
    <input type='radio' name='gender' value='1'>
    <input type='uname' name='uname'>
    <select name='age'>
        <option value='10'>10</option>
        <option value='11'>11</option>
        <option value='12'>12</option>
        <option value='13'>13</option>
    </select>
</form>

方式1:

    数据为文本类型文本: “UNAME =艾丽斯&mobileIpt = 110&生日= 1983年5月12日”

方式2:

    数据为json对象。{uanme:'vic',mobileIpt:'110',生日:'2013-11-11'}

方式3:

    数据为JSON数组。

[
    {"name":"uname","value":"alice"},
    {"name":"mobileIpt","value":"110"},   
    {"name":"birthday","value":"2012-11-11"}
]

方式4:

JSON字符串,形如 

 {“name”:“uname”,“age”:18}

注意,这个地方不是JSON对象,是JSON字符串,字符串。这样,在后台就可以直接注入到对象中。

当你需要向后台提交一组对象时时,JSON字符串的好处就体现出来了(对象数组)。

一般都是用交的方法传递参数。

写法:

$.ajax({
    type: 'post',
    url: 'aaa/bbb.do',
    contentType: 'application/json;charset=utf-8',
    data: '{"name": "uname", "age": 18}',
    success: function (data) { //返回json结果
        alert(data);
    }
});

方式5:

     把参数拼接在URL中,data属性设为空{ }

function getFormInfo(){
        var name='wen';
        var user='chen';
        $.ajax({
         url: "/login/authenticate?name="+name+"&user="+user,
         type: "POST",
         data:{},
         dataType: "json",
         success: function(data){
             
          },
          error:function(err){
            console.log(err.statusText);
            console.log('异常');
          }
        });
    }

方式6:

   根据表单id属性,把表单封装数据,调用JQuery的serialize()方法序列化为字符串。

   前提是:发送请求的必须是一个form表单,而且表单内要做参数的标签必须具有name属性,因为name属性会被认为请求参数名

  

//代码如下
    function getFormInfo(){
        var params=$('#login').serialize(); //把id为login的form表单里的参数自动封装为参数传递
        console.log(params);
        $.ajax({
         url: "http://192.168.10.32:6833/login/authenticate",
         type: "POST",
         data:params,
         cache:false,
         dataType: "json",
         success: function(data){
             
          },
          error:function(err){
          }
        });
    }

方式7:

  拼接data。


    function getFormInfo(){
        var name='chen';
        var user='wen';
        $.ajax({
         url: "http://192.168.10.32:6833/login/authenticate",
         type: "POST",
         data:'name='+name+'&user='+user,
         cache:false,
         dataType: "json",
         success: function(data){
             
          },
          error:function(err){
          }
        });
    }

方式8:

   表单序列化为json数据。 需要引入:<script type="text/javascript" src="serializeJSON.js"></script>


    function getFormInfo(){
        var params=$('#login').serializeJSON();
        console.log(params);
        $.ajax({
         url: "http://192.168.10.32:6833/login/authenticate",
         type: "POST",
         data:params,
         cache:false,
         dataType: "json",
         success: function(data){
             
          },
          error:function(err){
          }
        });
    }

方式9:

  表单序列化为json数据,既有全部直接获取表单中的数据又有单独出来的数据。


    function getFormInfo(){
        var params=$('#login').serializeJSON();
        console.log(params);
        params.height='20';  //附加json元素
        $.ajax({
         url: "http://192.168.10.32:6833/login/authenticate",
         type: "POST",
         data:params,
         cache:false,
         dataType: "json",
         success: function(data){
             
          },
          error:function(err){
          }
        });
    }

  

实例:

   假如现在有这样一个表单,是添加元素用的。

  

<form id='addForm' action='UserAdd.action' type='post'>
     <label for='uname'>用户名</label>:<input type='text' name='uname' id='uname'><br>
     <label for='mobileIpt'>手机号:</label><input type='text' name='mobileIpt' id='mobileIpt'><br>
     <label for='birthday'>生日:</label><input type='text' name='birthday'><br>
     <input type='button' value='提交' onclick='addUser()'>
</form>

基本的实现方式--json对象

function addUser(){
        var user = {
            uname:$("#uname").val(),
            mobileIpt:$("#mobileIpt").val(),
            birthday:$("#birthday").val()
        };
        $.ajax({
            url:'UserAdd.action',
            data:user,
            type:'post',
            dataType:'text',
            success:function(msg){
                if(msg=='1'){
                    console.log('添加成功');
                }else{
                    console.log('添加失败')
                }
            }
             
        })
    }

另一种处理方式--jquery的serializeArray方法

 序列化表格元素 (类似 '.serialize()' 方法) 返回 JSON 数据结构数据。
注意,此方法返回的是JSON对象而非JSON字符串。需要使用插件或者第三方库进行字符串化操作。
返回的JSON对象是由一个对象数组组成的,其中每个对象包含一个或两个名值对——name参数和value参数(如果value不为空的话)。

使用方法测试

$('#addForm').serializeArray();
//返回数据结构,是json数组,每个对像分别name和value为key,代表这个表单元素的name和value
[
    {"name":"uname","value":""},
    {"name":"mobileIpt","value":""},   
    {"name":"birthday","value":""}
]

使用JQuery.param()方法处理一下

var arr = $('#addForm').serializeArray();
$.param(arr);

"uname=alice&mobileIpt=110&birthday=1983-05-12"

这样就转成文本的形式进行传输了。

猜你喜欢

转载自blog.csdn.net/u011429663/article/details/85244694