Serialización y envío de un formulario con jQuery y PHP.

Estoy tratando de enviar los datos de un formulario usando jQuery. Sin embargo, los datos no llegan al servidor. ¿Puedes por favor decirme qué estoy haciendo mal?

Mi formulario HTML:

       

JavaScript (en el mismo archivo que el formulario anterior):

  $(document).ready(function(e) { $("#contactForm").submit(function() { $.post("getcontact.php", $("#contactForm").serialize()) // Serialization looks good: name=textInNameInput&&telefon=textInPhoneInput etc .done(function(data) { if (data.trim().length > 0) { $("#sent").text("Error"); } else { $("#sent").text("Success"); } }); return false; }) });  

Lado del servidor PHP ( /getcontact.php ):

 $nume = $_REQUEST["nume"]; // $nume contains no data. Also tried $_POST $email = $_REQUEST["email"]; $telefon = $_REQUEST["telefon"]; $comentarii = $_REQUEST["comentarii"]; 

¿Puedes decirme, por favor, qué estoy haciendo mal?


ACTUALIZAR

Se verificó var_dump($_POST) y se devolvió una matriz vacía.

Lo extraño es que el mismo código probado en mi máquina local funciona bien. Si subo los archivos en mi espacio de alojamiento deja de funcionar. Intenté hacer una forma antigua sin usar jQuery y todos los datos eran correctos.

No veo cómo esto sería un problema de configuración del servidor. ¿Algunas ideas?

¡Gracias!

Puedes usar esta función

 var datastring = $("#contactForm").serialize(); $.ajax({ type: "POST", url: "your url.php", data: datastring, dataType: "json", success: function(data) { //var obj = jQuery.parseJSON(data); if the dataType is not specified as json uncomment this // do what ever you want with the server response }, error: function() { alert('error handling here'); } }); 

el tipo de retorno es json

EDITAR: uso event.preventDefault para evitar que el navegador se event.preventDefault en tales situaciones.

Añadiendo más datos a la respuesta.

dataType: "jsonp" si es una llamada de dataType: "jsonp" dominios.

beforeSend: // esta es una función de solicitud de callback

complete: // una función a la que se llamará después de que finalice la solicitud. Por lo tanto, el código que debe ejecutarse independientemente del éxito o error puede ir aquí

async: // de forma predeterminada, todas las solicitudes se envían de forma asíncrona

cache: // por defecto es verdadero. Si se establece en falso, forzará que las páginas solicitadas no sean almacenadas en caché por el navegador.

Encuentra la página oficial aquí.

Puede agregar datos adicionales con datos de formulario

Usa serializeArray y agrega los datos adicionales:

 var data = $('#myForm').serializeArray(); data.push({name: 'tienn2t', value: 'love'}); $.ajax({ type: "POST", url: "your url.php", data: data, dataType: "json", success: function(data) { //var obj = jQuery.parseJSON(data); if the dataType is not specified as json uncomment this // do what ever you want with the server response }, error: function() { alert('error handing here'); } }); 

¿Ha comprobado en la consola si los datos del formulario están correctamente serializados? ¿Es exitosa la solicitud de ajax? Además, no cerró la cita del marcador de posición, lo que puede causar algunos problemas: