2011-09-15 32 views
53

Estoy tratando de publicar valores de formulario a través de AJAX en un archivo php. ¿Cómo puedo recopilar los valores de mi formulario para enviarlos dentro del parámetro "datos"?jQuery - Obtener valores de formulario para 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

Debe enviarlo en formato json '{" clave ": valor," clave ": valor}'. Lo que sugeriría es crear un objeto javascript con sus parámetros como sus propiedades y usar 'JSON.stringify (object)' para convertir el objeto a formato json. –

+0

@SangSuantak, ¿por qué te molestaría con las conversiones JSON cuando no las necesitarías con el conjunto normal de pares de nombre/valor? –

Respuesta

111

utilizar el método de serialización:

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

Docs: serialize()

+0

¿Cómo se obtienen los datos del formulario y una variable adicional configurada manualmente? como datos: $ ("# registerSubmit"). serialize() + '& myvar = 123'? eso no parece funcionar de la manera que lo tengo – Dss

+3

No veo lo que eso no estaría funcionando. Si los datos que desea agregar son más complejos, puede usar '$ .param'. '$ (" form "). serialize() +" & "+ $ .param ({myvar: 123})'. – Robin

+5

También hay otro método: use 'serializeArray'. 'data = $ (" form "). serializeArray(); data.push ({name: "myvar", valor: 123}); $ .param (data); ' – Robin

5

puede utilizar la función val para recopilar datos de entradas:

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

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

+0

Gracias! Eso lo hizo. – user547794

+4

Sí, pero no debería tener que hacerlo manualmente para cada campo. Para eso sirve serializar. ¿Qué pasa si agregas un campo? No quieres tener que cambiar tu js. – Robin

0

intento ya que este código.

$.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); 
     } 
    }); 

Creo que esto va a funcionar definitivamente ..

también se puede utilizar .serialize() función de envío de datos a través de jQuery Ajax ..

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

Gracias.

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 
} 

y

$.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); 
     } 
    }); 

Usted no tiene que preocuparse acerca de cualquier otra cosa. jquery manejará la serialización, etc. también puede agregar el parámetro de cadena de consulta de envío submit = 1 en el objeto json de datos.

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