2011-09-15 27 views
53

Sto cercando di inviare valori di modulo tramite AJAX a un file php. Come posso raccogliere i valori del mio modulo per inviare all'interno del parametro "dati"?jQuery - Ottenere i valori del modulo per ajax POST

$.ajax({ 
     type: "POST", 
     data: "submit=1&username="+username+"&email="+email+"&password="+password+"&passconf="+passconf, 
     url: "http://rt.ja.com/includes/register.php", 
     success: function(data) 
     { 
      //alert(data); 
      $('#userError').html(data); 
      $("#userError").html(userChar); 
      $("#userError").html(userTaken); 
     } 
    }); 

HTML:

<div id="border"> 
    <form action="/" id="registerSubmit"> 
    <div id="userError"></div> 
     Username: <input type="text" name="username" id="username" size="10"/><br> 
     <div id="emailError" ></div> 
     Email: <input type="text" name="email" size="10" id="email"/><br> 
     <div id="passError" ></div> 
     Password: <input type="password" name="password" size="10" id="password"/><br> 
     <div id="passConfError" ></div> 
     Confirm Password: <input type="password" name="passconf" size="10" id="passconf"/><br> 
     <input type="submit" name="submit" value="Register" /> 
    </form> 
</div> 
+1

Si dovrebbe inviarlo in formato json '{" chiave ": valore," chiave ": valore}'. Quello che vorrei suggerire è creare un oggetto javascript con i parametri come proprietà e usare 'JSON.stringify (oggetto)' per convertire l'oggetto in formato json. –

+0

@SangSuantak, perché dovresti preoccuparti delle conversioni JSON quando non ti serviranno con il normale set di coppie nome/valore ?! –

risposta

111

utilizzare il metodo serialize:

$.ajax({ 
    ... 
    data: $("#registerSubmit").serialize(), 
    ... 
}) 

Documenti: serialize()

+0

Come si ottengono i dati del modulo e una variabile impostata manualmente extra? dati simili: $ ("# registerSubmit"). serialize() + '& myvar = 123'? non sembra funzionare come ho fatto io – Dss

+3

Non vedo cosa non funzionerebbe. Se i dati che vuoi aggiungere sono più complessi, puoi usare '$ .param'. '$ (" form "). serialize() +" & "+ $ .param ({myvar: 123})'. – Robin

+5

C'è anche un altro metodo: usare 'serializeArray'. 'data = $ (" form "). serializeArray(); data.push ({nome: "myvar", valore: 123}); $ .param (dati); ' – Robin

5

è possibile utilizzare la funzione val per raccogliere i dati dagli ingressi:

jQuery("#myInput1").val(); 

http://api.jquery.com/val/

+0

Grazie! Questo è stato. – user547794

+4

Sì, ma non dovresti farlo manualmente per ogni campo. Ecco a cosa serve la serializzazione. Cosa succede se si aggiunge un campo? Non vuoi cambiare il tuo js. – Robin

0

prova come questo codice.

$.ajax({ 
     type: "POST", 
     url: "http://rt.ja.com/includes/register.php?submit=1", 
     data: "username="+username+"&email="+email+"&password="+password+"&passconf="+passconf, 

     success: function(html) 
     { 
      //alert(html); 
      $('#userError').html(html); 
      $("#userError").html(userChar); 
      $("#userError").html(userTaken); 
     } 
    }); 

Penso che questo funzionerà sicuramente ..

è anche possibile utilizzare la funzione .serialize() per l'invio dei dati tramite jQuery Ajax ..

i.e: data : $("#registerSubmit").serialize() 

Grazie.

0
var username = $('#username').val(); 
var email= $('#email').val(); 
var password= $('#password').val(); 
2
var data={ 
userName: $('#userName').val(), 
email: $('#email').val(), 
//add other properties similarly 
} 

e

$.ajax({ 
     type: "POST", 
     url: "http://rt.ja.com/includes/register.php?submit=1", 
     data: data 

     success: function(html) 
     { 
      //alert(html); 
      $('#userError').html(html); 
      $("#userError").html(userChar); 
      $("#userError").html(userTaken); 
     } 
    }); 

Non dovete preoccuparsi di qualsiasi altra cosa. jquery gestirà la serializzazione ecc. inoltre è possibile aggiungere il parametro stringa query submit submit = 1 nell'oggetto json dati.

7
$("#registerSubmit").serialize() // returns all the data in your form 
$.ajax({ 
    type: "POST", 
    url: 'your url', 
    data: $("#registerSubmit").serialize(), 
    success: function() { 
      //success message mybe... 
    } 
});