JQuery Ajax 向后台傳參方式


在jquery的ajax函數中,可以傳入3種類型的數據

  1. 文本:"uname=alice&mobileIpt=110&birthday=1983-05-12"
  2. json對象:{"uanme":"vic","mobileIpt":110,"birthday":"2013-11-11"}
  3. json數組:
[
    {"name":"uname","value":"alice"},
    {"name":"mobileIpt","value":110},   
    {"name":"birthday","value":"2012-11-11"}
]
  1. FormData對象:
它可以更靈活方便的發送表單數據,因為可以獨立於表單使用,實現表單數據的序列化。
最大的好處是可以通過Ajax上傳文件。如果它的字段類型不是Blob也不是File,則會被轉換成字符串。
通過這種方式,可以非常方便的進行表單提交,直接表單轉換成FormData對象即可。

  var fd = new FormData(document.querySelector("form"));
  data: fd,
  processData: false,  // 不處理數據
  contentType: false   // 不設置內容類型

第一種寫法(把參數拼接在URL中,data屬性設為空{ })

var id = "a";
var name = "語文";

url:"/sell/login?id="+id+"&name="+name,
data:{},

第二種寫法(參數寫成json數據形式)

         data:{
            'name':'ld',
            'user':'littledonkey'
         },

第三種寫法(根據表單id屬性,把表單封裝數據,調用JQuery的serialize()方法序列化為字符串)

前提是:發送請求的必須是一個form表單,而且表單內要做參數的標簽必須具有name屬性,因為name屬性會被認為請求參數名
var params=$('#login').serialize();     //把id為login的form表單里的參數自動封裝為參數傳遞
data:params,
    作用:序列表單內容為字符串。
    參數: 無
    返回值:表單內容的字符串格式

serialize方法可以將表單序列化成一個拼接的字符串形式:
username=a&address=b&age=c


serializeArray方法可以將表單序列化成一個特殊的json數組,帶有name和value的json:

返回值:返回的是JSON數組而非JSON字符串,返回格式為:
   [ 
     {name: 'firstname', value: 'Hello'}, 
     {name: 'lastname', value: 'World'},
     {name: 'alias'}
  ]

優化:
第一種方法:

    $.param(data);    //將表單元素數組或者對象序列化。
    name=alice&mobileIpt=110&birthday=1983-05-12

    如果被傳遞的對象在數組中,則必須是以 .serializeArray() 的返回值為格式的對象數組:

    [
        {name:"first",age:"12"},
        {name:"last",age:"11"},
        {name:"job",age:"5"}
    ]

第二種方法:

數組轉換成對象:
  var data ={};
  $("form").serializeArray().map(function(val){
      data[val.name]=val.value;
  });

對象轉換成json字符串:
var myJSON =  JSON.stringify(data );

{"name": "first", "age": "12"}

第四種寫法(拼接data)

var id = "a";
var name = "語文";

//data: "id=" + id + "&name=" + $("#name").val(),
data: "id=" + id + "&name=" + name,


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM