No se puede acceder a los datos de la solicitud jQuery Ajax, devuelve una matriz vacía

Tengo un formulario que se llama a través del ejemplo de inicio de sesión del complemento fancybox .

Aquí está el código que tengo:

Formar:

 

JavaScript / jQuery:

  $(document).ready(function(){ $("#event_trigger").fancybox({ 'padding' : 0, 'scrolling' : 'no', 'titleShow' : false, }); $("#events_form").bind("submit", function() { $.fancybox.showActivity(); $.ajax({ type : "POST", cache : false, url : "/events/index.php", data : $(this).serializeArray(), success: function(data) { $.fancybox(data); } }); return false; }); });  

El archivo PHP devuelve una matriz vacía. Sin embargo, la pestaña de publicación de Firebug muestra los datos del formulario.

Además, me di cuenta de que si lo hago

 print_r($_SERVER['REQUEST_METHOD']) 

Esto devuelve GET, aunque haya especificado POST.

 $(this).serializeArray() 

con el nombre del formulario CSS id (# my-form-ID, en este ejemplo) como este:

 $("#my-form-ID").serializeArray() 

Espero que lo solucione. Funcionó para mí. ;-RE

$.ajax espera que los data del parámetro sean un objeto o una cadena.

http://api.jquery.com/jQuery.ajax/ desplácese hacia abajo hasta los datos.

Si envuelve sus data en un objeto, por ejemplo, data: {array:$(this).serializeArray()} puede funcionar. Aunque no estoy 100% seguro de eso.

Usted está haciendo una solicitud AJAX en un formulario de envío.

A menos que la solicitud de AJAX sea sincrónica (lo cual no recomendaría, de todos modos) existe el peligro de que se envíe su formulario antes de que exista la posibilidad de que la solicitud de AJAX regrese.

En la linea:

 $(this).serializeArray() 

$ (esto) se refiere al elemento de formulario que ha seleccionado en el método de enlace. Estoy asumiendo que esto es intencionado