天天看點

jquery序列化表單 - serialize()/serializeArray()/param()差別

在jquery中,當我們使用ajax時,常常需要拼裝input資料以鍵值對(key/value)的形式發送到伺服器,用jquery的serialize方法可以輕松的完成這個工作,使用這個方法可以将表單序列化為鍵值對(key1=value1&key2=value2…)後送出。下面介紹jquery中serialize()的用法

serialize()方法通過序列化表單值,建立url編碼文本字元串,可以選擇一個或多個表單元素(比如 input 及/或 文本框),或直接選擇form本身,将其序列化後用于ajax請求,如:username=xxx&password=yyy

注釋:隻會将”成功的控件“序列化為字元串。如果不使用按鈕來送出表單,則不對送出按鈕的值序列化。如果要表單元素的值包含到序列字元串中,元素必須使用 name 屬性

var data = $('form').serialize();

将表單内容序列化成一個字元串

username=forrest&passwd=1234&gender=0&interest=swimming&interest=running&interest=readbook

1.在ajax送出表單資料時,就不用一一列舉出每一個參數。隻需将data參數設定為$("form").serialize()

2.用字元串方式時,需要注意對字元編碼(中文問題),如果不希望編碼帶來麻煩,可以使用serialize()方法,它會自動編碼

這樣,我們就可以把序列化的值傳給ajax()作為url的參數,輕松使用ajax()送出form表單了,而不需要一個一個擷取表單中的值然後傳給ajax()

使用$.post()、$.get()和$.getjson()也是一樣的

jquery中serializearray方法是序列化表單元素(類似'.serialize()'方法)傳回json資料結構資料

serializearray()序列化表單元素為json資料

var jsondata = $("form").serializearray();

将頁面表單序列化成一個json結構的對象。注意不是json字元串

[{"name":"lihui", "age":"20"},{...}] 擷取資料為 jsondata[0].name

在使用ajax送出表單資料時,以上兩種方法都可以将data參數設定為$(form).serialize()或$(form).serializearray()

$.param()方法是serialize()方法的核心,用來對一個數組或對象按照key/value進行序列化

比如将一個普通的對象序列化:

var obj = {a:1,b:2,c:3};

var k = $.param(obj);

alert(k); //輸出a=1&b=2&c=3

繼續閱讀