閱讀722 返回首頁    go 阿裏雲 go 技術社區[雲棲]


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

serialize()

在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()方法,它會自動編碼

實例

<form action="">
First name: <input type="text" name="FirstName" value="Bill" /><br />
Last name: <input type="text" name="LastName" value="Gates" /><br />
</form>
<script>
$(document).ready(function(){
    console.log($("form").serialize()); // FirstName=Bill&LastName=Gates
});
</script>

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

$.ajax({
    type: 'post',
    url: 'your url',
    data: $("form").serialize(),
    success: function(data) {
        // your code
    },
    error: function(error){alert(error);
});

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

$.post('your url', $("form").serialize(), function(data) {
        // your code
    }
});

$.get('your url', $("form").serialize(), function(data) {
        // your code
    }
});

$.getJSON('your url', $("form").serialize(), function(data) {
        // your code
    }
});

serializeArray()方法

JQuery中serializeArray方法是序列化表單元素(類似'.serialize()'方法)返回JSON數據結構數據

serializeArray()序列化表單元素為JSON數據

格式

var jsonData = $("form").serializeArray();

功能

將頁麵表單序列化成一個JSON結構的對象。注意不是JSON字符串

返回結果:

[{"name":"lihui", "age":"20"},{...}] 獲取數據為 jsonData[0].name

實例

var fields = $("select, :radio").serializeArray();
jQuery.each( fields, function(i, field){
  $("#results").append(field.name + "=" +field.value + "; ");
});//username=forrest; passwd=1234; gender=0; interest=swimming; interest=running; interest=readBook;

在使用ajax提交表單數據時,以上兩種方法都可以將data參數設置為$(form).serialize()或$(form).serializeArray()

<!doctype html>  
<html>  
<head>  
<meta charset="utf-8">  
<title>無標題文檔</title>  
<script src="js/jquery-3.1.1.min.js"></script>  
<script>  
    function t(){  
     var str1 =  $("form").serialize();  
     var str2 =  $("form").serializeArray();  
     alert("serialize="+str1+"   serializeArray="+str2);  
    }  
</script>  
</head>  
<body>  
  <form>  
     <input type="text" name="username" />  
     <input type="text" name="age" >  
     <input type="password" name="password" />  
     <input type="button" >  
  </form>  
</body>  
</html> 

param()方法

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

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

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

var k = $.param(obj);

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

最後更新:2017-05-23 15:02:25

  上一篇:go  bmon:Linux 下一個強大的網絡帶寬監視和調試工具
  下一篇:go  機器學習算法集錦:從貝葉斯到深度學習及各自優缺點