表單提交
使用jQuery.ajax()進行表單提交時,需要傳遞參數,最直接的方法便是使用Form的serializa()將表單序列化,前提只是將Form表單中的name屬性與數據庫的字段名保持一致便可;但如果遇到再次往其中增加參數的狀況呢,我們該如何處理?
First:
其實,jQuery ajax的serialize() 方法是將表單序列化為鍵值對(key1=value1&key2=value2…)后提交,使用標准的 URL-encoded 編碼表示文本字符串,而jQuery ajax-param()方法也是將其序列化一個 key/value 對象,如:
var params = { width:1900, height:1200 }; var str = jQuery.param(params); $("#results").text(str);
結果為:
width=1680&height=1050
恰好兩者轉換的形式一樣,於是在serialize()中想要增加其他參數的時候,就可以:
jQuery.post(url, $.param({aa:'aa1',bb:'bb'})+'&'+jQuery('#fm').serialize(), function (result) { ... }
於是傳到后台的參數中,除過form表單中的含有name屬性的字段外,就額外增加了aa以及bb兩個參數,我們的問題也便迎刃而解了!
Second:
還有另外一種解決方法就是,將需要增加的參數寫在表單隱藏域中,這樣是需要使用Form.serialize()方法,即可將其余參數增加進去。