2012-04-10 49 views
0

我有一個表單,我正在使用AJAX傳遞值。根據用戶可以在後端添加的新字段,表單有些動態。我已經結束了的那種可怕的是這樣的:掃描表單域並使用jQuery構建數組

var collected = {  
     1 : $('#wpsc_checkout_form_1').val(),   
     2 : $('#wpsc_checkout_form_2').val(), 
     3 : $('#wpsc_checkout_form_3').val(), 
     4 : $('#wpsc_checkout_form_4').val(), 
     5 : $('#wpsc_checkout_form_5').val(), 
     6 : $('#wpsc_checkout_form_6').val(),   
     7 : $('#wpsc_checkout_form_7').val(),   
     8 : $('#wpsc_checkout_form_8').val(), 
     9 : $('#wpsc_checkout_form_9').val(), 
     10 : $('#wpsc_checkout_form_10').val(), 
     11 : $('#wpsc_checkout_form_11').val(),   
     12 : $('#wpsc_checkout_form_12').val(), 
     13 : $('#wpsc_checkout_form_13').val(), 
     14 : $('#wpsc_checkout_form_14').val(), 
     15 : $('#wpsc_checkout_form_15').val(), 
     16 : $('#wpsc_checkout_form_16').val(),   
     17 : $('#wpsc_checkout_form_17').val(),   
     18 : $('#wpsc_checkout_form_18').val(), 
     19 : $('#wpsc_checkout_form_19').val(), 
     20 : $('#wpsc_checkout_form_20').val(),   
     21 : $('#wpsc_checkout_form_21').val(),   
     22 : $('#wpsc_checkout_form_22').val(), 
     23 : $('#wpsc_checkout_form_23').val(), 
     24 : $('#wpsc_checkout_form_24').val(), 
     25 : $('#wpsc_checkout_form_25').val(), 
     26 : $('#wpsc_checkout_form_26').val(),   
     27 : $('#wpsc_checkout_form_27').val(),   
     28 : $('#wpsc_checkout_form_28').val(), 
     29 : $('#wpsc_checkout_form_29').val(), 
     30 : $('#wpsc_checkout_form_20').val(),   
     31 : $('#wpsc_checkout_form_31').val(),   
     32 : $('#wpsc_checkout_form_32').val(), 
     33 : $('#wpsc_checkout_form_33').val(), 
     34 : $('#wpsc_checkout_form_34').val(), 
     35 : $('#wpsc_checkout_form_35').val(), 
     36 : $('#wpsc_checkout_form_36').val(),   
     37 : $('#wpsc_checkout_form_37').val(),   
     38 : $('#wpsc_checkout_form_38').val(), 
     39 : $('#wpsc_checkout_form_39').val(), 
     40 : $('#wpsc_checkout_form_40').val(),    
     41 : $('#wpsc_checkout_form_41').val(),   
     42 : $('#wpsc_checkout_form_42').val(), 
     43 : $('#wpsc_checkout_form_43').val(), 
     44 : $('#wpsc_checkout_form_44').val(), 
     45 : $('#wpsc_checkout_form_45').val(), 
     46 : $('#wpsc_checkout_form_46').val(),   
     47 : $('#wpsc_checkout_form_47').val(),   
     48 : $('#wpsc_checkout_form_48').val(), 
     49 : $('#wpsc_checkout_form_49').val(),   
     } 

有人建議可以這樣做的更清潔的方式,這也將佔到任何數字高於49,如果他們在某些時候由獲得創建用戶。

回答

4

如果你真的必須使用對象爲這一目的,和你輸入VAL ID有格式,您可以:

var collected = {}; 
$('input[id^=wpsc_checkout_form_]').each(function(i) { 
    collected[i] = $(this).val(); 
}); 

$.post('/your/url', collected, function(resp) { 
    // handler 
}); 

或者你可以使用.serialize()

$('#formId').serialize() 

http://api.jquery.com/serialize/

.serialize()方法以標準URL編碼的 表示法創建一個文本字符串。它在代表一組表格 元素的jQuery對象上運行。表單元素可以是多種類型

然後在您的Ajax:

$.post('url.php', $('#formId').serialize(), function(responseText) { 
    // handler 
}); 
+0

驚人!非常感謝! 另外,我剛剛發現今天這個:http://www.garyc40.com/2010/03/5-tips-for-using-ajax-in-wordpress/#form 或許,如果別人來沿着他們會發現這很有用。 – deweydb 2012-04-11 04:59:47