php - formdata - jquery $.post array vacío
upload image ajax jquery php mysql (5)
Fui mordido por el mismo problema, y encuentro que la solución que Owen da no es apropiada. Está serializando el objeto usted mismo, mientras que jQuery debería hacer eso por usted. También podría hacer un $ .get () en ese caso.
Descubrí que, en mi caso, en realidad era una redirección de servidor de / mydir a / mydir / (con barra inclinada) que invalidaba la matriz POST. La solicitud fue enviada a un index.php dentro de / mydir
Esto estaba en una máquina local, así que no pude verificar el tráfico HTTP. Me hubiera enterado antes si hubiera hecho eso.
Estoy usando jQuery para publicar un formulario en un archivo php, script simple para verificar los detalles del usuario.
var emailval = $("#email").val();
var invoiceIdval = $("#invoiceId").val();
$.post("includes/verify.php",
{invoiceId:invoiceIdval , email:emailval },
function(data) {
//stuff here.
});
Código PHP:
<?php
print_r($_POST);
?>
Miro la respuesta en Firebug, es una matriz vacía. La matriz debe tener al menos algún valor.
No puedo entender por qué $_POST
no está funcionando en el archivo php. Firebug muestra la publicación para contener los contenidos publicados, el correo electrónico y la identificación de la factura, simplemente no se recibe nada en el archivo php.
La forma:
<form method="post" action="<?=$_SERVER[''PHP_SELF'']; ?>" enctype="application/x-www-form-urlencoded">
Alguien sabe lo que está haciendo?
Gracias
encontré esto - http://www.bradino.com/php/empty-post-array/
que una ruta sensata para ir?
Probé la función dada por Owen pero recibí una alerta en blanco también. Extraño, pero me di cuenta de que generaría una cadena de consulta y devolvería una alerta en blanco. Luego volvería a enviar y alertaría con los valores de publicación correctos.
También tenía los nombres de campo establecidos en el html usando el atributo id (que era como se hacía en un tutorial de jquery que estaba siguiendo). Esto no permitió que mis campos de formulario se serializaran. Cuando cambié el id para nombrarlo, resolvió mi problema.
Terminé yendo con $ .ajax después de todo, ya que hizo lo que estaba buscando.
Tuve un caso en el que estaba usando jQuery para deshabilitar todas las entradas (incluso las ocultas que quería) justo antes de usar jQuery para enviar el formulario. Cambié mi jQuery para desactivar solo las entradas de tipo "botón" y ahora los vars ocultos se publican cuando se envía el formulario. ¡Parece que si configuras una entrada oculta como deshabilitada, sus valores no se publicarán con el formulario!
Cambiado:
$(''input'').attr(''disabled'',true);
a:
$(''input[type=button]'').attr(''disabled'',true);
$.post()
pasa datos a la llamada $.ajax()
subyacente, que establece la application/x-www-form-urlencoded
de forma predeterminada, por lo que no creo que sea eso.
puedes probar esto?
var post = $(''#myForm'').serialize();
$.post("includes/verify.php", post, function(data) {
alert(data);
});
la llamada serialize()
tomará todos los datos actuales en form.myForm
.
application/x-www-form-urlencoded
Ahí está tu respuesta Se publica, solo buscas las variables en $ _POST array. Lo que realmente quieres es $ _REQUEST. Al contrario del nombre, $ _POST contiene variables de entrada enviadas en el cuerpo de la solicitud, independientemente del método de envío. $ _GET contiene variables analizadas desde la cadena de consulta de la URL. Si solo quiere variables enviadas, use el $ _REQUEST global.
Si espera recibir cargas de archivos, entonces también quiere crear una nueva matriz que incluya los contenidos de $ _FILES:
$ arguments = $ _REQUEST + $ _FILES;