JQuery中serialize()、serializeArray()和param()方法樣本介紹,serializearray

來源:互聯網
上載者:User

JQuery中serialize()、serializeArray()和param()方法樣本介紹,serializearray

下面是伺服器端的jsp代碼:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% request.setCharacterEncoding("UTF-8"); String username = request.getParameter("username"); String content = request.getParameter("content"); out.println("<div class='comment'><h6> "+username+" :</h6><p class='para'> "+content+" </p></div>"); %>

與JQuery中其他方法一樣,serialize()方法也是作用於一個JQuery對象,它能夠將DOM元素內容序列化為字串,用於ajax請求。通過使用serialize()方法,可以提交本頁面的所有域,代碼如下:

$("#send").click(function(){ $.get("get1.jsp", $("#form1").serialize(), function(data, textStatus) $("#resText").html(data); });});

當單擊“提交”按鈕後,所有屬於form1的表單元素都能提交到後台,即使在表單中再增加欄位,指令碼仍然能夠使用,並且不需要做其他多餘工作。

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

因為serialize()方法作用於JQuery對象,所以不光只有表單能使用它,其他選取器選取的元素也都能使用它,如以下JQuery代碼:

$(":checkbox,:radio").serialize();

把複選框和單選框的值序列化為字串形式,只會將選中的值序列化。

在JQuery中還有一個與serialize()類似的方法--serializeArray(),該方法不是返回字串,而是將DOM元素序列化後,返回JSON格式的資料。JQuery代碼如下:

var fields = $(":checkbox,:radio").serializeArray();console.log(fields); //用FireBug輸出

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

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

var obj = {a:1,b:2,c:3};var k = $.param(obj);alert(k); //輸出a=1&b=2&c=3

怎使用jquery serialize只擷取到value部分的值

用serializeArray() 返回JSON資料,直接操作JSON資料,結構如下:
[ {name: 'firstname', value: 'Hello'}, {name: 'lastname', value: 'World'},{name: 'alias'}, // 值為空白]

x=$("form").serializeArray();
alert(x[0].value);//'firstname'的值'Hello'
alert(x[1].value);//'lastname'的值'World'
 
JQuery中$("#actionForm")formSerialize()報錯:對象不支援"formSerialize"屬性或方法為何?

據我所知,formSerialize()是jQuery的表單外掛程式中提供的方法。
formSerialize()的核心方法是:$.param(data);
Form表單經過formSerialize(),被序列化為形如:name1=value1&name2=value2的字串
必須用一個字串變數來接序列化後的內容
①var queryString = $('#myFormId').formSerialize();
②var queryString = $.param($('#myFormId'));
①、②是等價的,只不過formSerialize();由jQuery.form外掛程式提供,而$.param(data);是jQuery原生提供的。
你的問題:
“對象不支援"formSerialize"屬性或方法”
原因:
①在調用formSerialize之前,沒有引用jQuery.Form.js這個檔案
②$("#actionForm").formSerialize();做在的js檔案,在引用jQuery.Form.js之前調用的,這樣也會找不到這個方法。
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.