2012-04-10 10 views
0

Ich habe ein Formular, das ich AJAX verwenden, um Werte mit zu übergeben. Das Formular ist etwas dynamisch, abhängig von den neuen Feldern, die ein Benutzer innerhalb des Backends hinzufügen kann. Ich habe mit etwas Art von abscheulichen wie dies endete:Suche nach Formularfeldern und Bau Array mit 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(),   
     } 

Kann jemand vorschlagen, eine sauberere Weg, dies zu tun, die auch für alle Zahlen erklären würde höher als 49, wenn sie an einem gewissen Punkt kann durch die erstellte erhalten Benutzer.

Antwort

4

Wenn Sie müssen wirklich Objekt für diesen Zweck verwenden, und Ihre Eingabe val ID hat dieses Format, können Sie:

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

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

Oder Sie können .serialize()

$('#formId').serialize() 

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

verwenden

Die Methode .serialize() erstellt eine Textzeichenfolge in der Standard-URL-codierten Schreibweise . Es arbeitet mit einem jQuery-Objekt, das eine Gruppe von Elementen des Typs darstellt. Die Formelemente können von mehreren Typen sein

Dann in Ihrer Ajax:

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

Amazing! vielen Dank! Auch ich habe das gerade heute entdeckt: http://www.garyc40.com/2010/03/5-tips-for-using-ajax-in-wordpress/#form Vielleicht, wenn jemand anderes kommt, werden sie finden das ist nützlich. – deweydb