2011-05-08 9 views
7

quiero enviar un formulario con aproximadamente 10 entradas usando jquery/ajax, pero no sé cómo puedo pasarle los datos a través de los parámetros de datos de ajax.debo serializar ellos ?pasando los datos en la presentación del formulario a través de jquery/ajax

+0

¿A qué le está pasando los datos? ASP.NET, PHP? ¿El servidor al que le está pasando los datos espera datos JSON o solo una cadena de pares de valores clave? – Dve

+0

Creo que al enviar un formulario, todos sus campos se envían automáticamente. –

+0

@Dve: uso PHP. –

Respuesta

14

El jQuery.serialize puede ser útil para usted. Es importante que use la propiedad name para todos los campos del formulario que desea enviar. El código correspondiente puede tratarse del siguiente

$("form#myFormId").submit(function() { 
    var mydata = $("form#myFormId").serialize(); 
    console.log(mydata); // it's only for test 
    $.ajax({ 
     type: "POST", 
     url: "myUrlToPostData.php", 
     data: mydata, 
     success: function(response, textStatus, xhr) { 
      console.log("success"); 
     }, 
     error: function(xhr, textStatus, errorThrown) { 
      console.log("error"); 
     } 
    }); 
    return false; 
}); 
+0

¿dónde está la salida html? –

+0

@phpPluginMaster: No estoy seguro de lo que quieres decir. El manejador de eventos 'submit' devuelve' false', por lo que uno no tiene redirección por enviar. Uno envía solo los datos del formulario al servidor. El parámetro 'response' de la devolución de llamada' success' puede tener opcionalmente los datos devueltos del servidor ('url:" myUrlToPostData.php "'). – Oleg

+0

SI está usando ajax, normalmente desea generar algo cuando tenga éxito. No veo el resultado en el éxito que no sea console.log –

3
$.ajax({ 
type: "POST", 
url: "handle.php", 
data: "n="+name+"&e="+email, 
success: function() { 
alert('It worked'); 
} 
}); 

Aquí está la forma más sencilla de usarlo. Esto simplemente enviaría dos variables de publicación, $ _POST ['n'] y $ _POST ['e'], a handle.php. Su forma sería así si el Ajax se encuentra en una función llamada send():

<form id="form" onsubmit="send(this.name.value, this.email.value); return false;"> 
+0

gracias, pero tengo 10 campos de entrada para publicar en el servidor y creo que separarlos para hacer cadena de datos creará una cadena larga. Uso PHP. –

+0

Para IE, al menos, no hay límite para los datos POST a medida que se pasan por el encabezado. Como hará referencia a estas cadenas como variables, ni siquiera notará la longitud de la cadena a menos que esté limitada por el servidor o PHP/JavaScript. "Sin embargo, el método POST no está limitado por el tamaño de la URL para enviar pares nombre/valor. Estos pares se transfieren en el encabezado y no en la URL". De: http://support.microsoft.com/default.aspx?scid=kb;EN-US;q208427 –

+1

serialize() es la mejor opción. Esto funciona cuando quieres publicar solo ciertos datos. –

Cuestiones relacionadas