0

AJAX を使用して値を渡すフォームがあります。ユーザーがバックエンド内に追加できる新しいフィールドに応じて、フォームは多少動的になります。私はこのような恐ろしいものになってしまいました:

  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

1 に答える 1

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
});
于 2012-04-10T04:01:40.777 に答える