ajax post方式 精講

2021-07-24 14:31:30 字數 3435 閱讀 8852

假如現在有這樣乙個表單,是新增元素用的。

<

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

>

我們不想使用表單submit的方式新增這個元素,我們就想使用ajax提交。

以前我們是這樣實現的:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

functionadduser();

$.ajax(else

}

})

}

這沒有什麼錯,就是獲取表單元素的值實在是太麻煩....這裡只有三項,很多項的時候就廢了....

直到有一天,我發現了jquery的serializearray方法

序列化**元素 (類似 '.serialize()' 方法) 返回 json 資料結構資料。

注意,此方法返回的是json物件而非json字串。需要使用外掛程式或者第三方庫進行字串化操作。

返回的json物件是由乙個物件陣列組成的,其中每個物件包含乙個或兩個名值對——name引數和value引數(如果value不為空的話)。

我們來試試看

$('#addform').serializearray();

//返回資料結構,是json陣列,每個對像分別name和value為key,代表這個表單元素的name和value

[ ,

,

]

這個貌似用不上啊

我們使用jquery.param()方法處理一下:

var arr = $('#addform').serializearray();

$.param(arr);

"uname=alice

&mobileipt=110&birthday=1983-05-12"

嘿這下符合我們的需求了吧,雖然不是json型別,但是至少可以作為data上傳了。

這裡我們可以直接在ajax的data處填上這個json陣列,在jquery內部自己呼叫$.param()處理的。

我們來看下jquery.param()方法的說明:

返回值:stringjquery.param(obj,[traditional])

將表單元素陣列或者物件序列化。

引數obj,[traditional]

陣列或jquery物件會按照name/value對進行序列化,普通物件按照key/value對進行序列化。

traditional:是否使用傳統的方式淺層序列化。

demo:

$.param();

"uanme=vic

&mobileipt=110&birthday=2013-11-11"

看著說明,貌似也跟我們沒關係啊,我們換乙個json陣列來看

$.param([,,]);

"undefined=

&undefined=&undefined="

這個轉換不成功了吧,為什麼我們表單的那種資料能夠成功轉換成url引數呢?我們來看下jquery原始碼

//

在ajax()方法中,對json型別的資料進行了$.param()處理

if ( s.data && s.processdata && typeof s.data !== "string")

//param方法中

if ( jquery.isarray( a ) || ( a.jquery && !jquery.isplainobject( a ) ) ) );

} else

}

這下明白了吧,如果是json資料,那麼挨個迴圈,只取他們的name屬性和value屬性拼接字串。

如果是普通物件,迴圈該物件的屬性,然後拼接字串。

總結:所以,本文要說的是,在jquery的ajax函式中,可以傳入3種型別的資料

1.文字:"uname=alice&mobileipt=110&birthday=1983-05-12"

2.json物件:

3.json陣列:

[

,,

]所以,我們可以一鍵獲取表單並提交,非常方便。

補充:其實提取表單資料的話只需要serialize()方法直接獲取"uname=alice&mobileipt=110&birthday=1983-05-12"這樣的就可以了。

ajax POST方式資料傳遞

ajax快取問題的解決 ajax的本質就是將狀態儲存在客戶端,因此資源的快取和再利用是他的優勢所在,但有時候不希望被快取,例如計數器,不同請求的計數器得到的結果應該是最新的。時長也應該每次重新整理不一樣。1 設定隨機數 math.random url user.php?username userna...

Prim演算法精講

對prim演算法有了新的理解,現在此總結一下。我們現在主要講的是實現部分。我們的原點是0,那麼現在u集合中只有0,v u中和0相鄰接的頂點中,最小輕邊是0和2之間的那條,所以選擇2,現在u為0和2,之後我們繼續尋找,通過窮舉法我們找到了5,然後找到了3,然後找到了1,然後找到了4,最後程式結束。按照...

c string函式精講

還有必要再重複一下c 字串和c字串轉換的問題,許多人會遇到這樣的問題,自己做的程式要呼叫別人的函式 類什麼的 比如資料庫連線函式connect char char 但別人的函式引數用的是char 形式的,而我們知道,c str data 返回的字元陣列由該字串擁有,所以是一種const char 要...