假如現在有這樣乙個表單,是新增元素用的。
<我們不想使用表單submit的方式新增這個元素,我們就想使用ajax提交。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
>
以前我們是這樣實現的:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
function
adduser();
$.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();嘿這下符合我們的需求了吧,雖然不是json型別,但是至少可以作為data上傳了。$.param(arr);
"uname=alice
&mobileipt=110&birthday=1983-05-12"
這裡我們可以直接在ajax的data處填上這個json陣列,在jquery內部自己呼叫$.param()處理的。
我們來看下jquery.param()方法的說明:
返回值:stringjquery.param(obj,[traditional])看著說明,貌似也跟我們沒關係啊,我們換乙個json陣列來看將表單元素陣列或者物件序列化。
引數obj,[traditional]
陣列或jquery物件會按照name/value對進行序列化,普通物件按照key/value對進行序列化。
traditional:是否使用傳統的方式淺層序列化。
demo:
$.param();
"uanme=vic
&mobileipt=110&birthday=2013-11-11"
$.param([,,]);這個轉換不成功了吧,為什麼我們表單的那種資料能夠成功轉換成url引數呢?我們來看下jquery原始碼"undefined=
&undefined=&undefined="
//這下明白了吧,如果是json資料,那麼挨個迴圈,只取他們的name屬性和value屬性拼接字串。在ajax()方法中,對json型別的資料進行了$.param()處理
if ( s.data && s.processdata && typeof s.data !== "string")
//param方法中
if ( jquery.isarray( a ) || ( a.jquery && !jquery.isplainobject( a ) ) ) );
} else
}
如果是普通物件,迴圈該物件的屬性,然後拼接字串。
總結:所以,本文要說的是,在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 要...