2012-04-10 11 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

関連する問題