Envío de formularios Jquery / Ajax (enctype = "multipart / form-data"). ¿Por qué 'contentType: False' causa un índice indefinido en PHP?
He estado intentando enviar un formulario con enctype = "multipart / form-data". Tengo esta configuración porque el formulario incluirá subidas jpeg / png una vez que haya averiguado el envío de ajax para las entradas de texto.
php funciona bien cuando se hace referencia al script mediante la acción dentro del formulario html.
los datos del formulario parecen ser recuperados correctamente por el siguiente archivo, ya que la línea de alerta muestra: productName = Test + Name & productDescription = Test + Description & OtherProductDetails =
Los datos devueltos impresos en mi HTML por la función jquery success son un error de php que dice: Índice no definido: productoNombre
Eliminando contentType: falso soluciona el problema.
Cuando busco en Google jquery / ajax multipart / form-data submit, los resultados más importantes incluyen al menos principalmente 'contentType: false'. Por favor, ¿podría alguien explicarme la razón?
http://digipiph.com/blog/submitting-multipartform-data-using-jquery-and-ajax http://hayageek.com/jquery-ajax-form-submit/ Enviando multipart / formdata con jQuery.ajax
La documentación de la API jquery dice: contentType (predeterminado: 'application / x-www-form-urlencoded; charset = UTF-8') Tipo: cadena Al enviar datos al servidor, use este tipo de contenido.
¿Por qué tendríamos que establecerlo en falso para un envío de múltiples partes / formulario de datos? ¿Cuándo sería necesaria la configuración falsa?
Jquery:
$("#addProductForm").submit(function (event) {
event.preventDefault();
//grab all form data
var formData = $(this).serialize();
$.ajax({
url: 'addProduct.php',
type: 'POST',
data: formData,
async: false,
cache: false,
contentType: false,
processData: false,
success: function (returndata) {
$("#productFormOutput").html(returndata);
alert(formData);
},
error: function () {
alert("error in ajax form submission");
}
});
return false;
});