Przesyłanie formularza Jquery / Ajax (enctype = „multipart / form-data”). Dlaczego „contentType: False” powoduje niezdefiniowany indeks w PHP?
Próbowałem przesłać formularz za pomocą enctype = "multipart / form-data". Mam to ustawienie, ponieważ formularz będzie obejmował przesyłanie plików jpeg / png, gdy tylko zorientuję się w zgłoszeniu ajaxowym dla danych tekstowych.
php działa dobrze podczas odwoływania się do skryptu za pomocą akcji w formularzu HTML.
dane formularza wydają się być poprawnie pobierane przez poniższe jquery, ponieważ linia alertów pokazuje: productName = Test + Name & productDescription = Test + Description & OtherProductDetails =
zwrócone dane wydrukowane do mojego HTML przez funkcję powodzenia jquery to błąd php: Niezdefiniowany indeks: nazwa_produktu
usuwanie contentType: false rozwiązuje problem.
Kiedy google jquery / ajax multipart / przekazanie danych formularza, najlepsze trafienia zawierają co najmniej głównie „contentType: false”. Czy ktoś mógłby mi wyjaśnić powód?
http://digipiph.com/blog/submitting-multipartform-data-using-jquery-and-ajax http://hayageek.com/jquery-ajax-form-submit/ Wysyłanie multipart / formdata za pomocą jQuery.ajax
Dokumentacja API jquery mówi: contentType (domyślnie: 'application / x-www-form-urlencoded; charset = UTF-8') Typ: String Podczas wysyłania danych do serwera, użyj tego typu zawartości.
Dlaczego musielibyśmy ustawić go na false w przypadku przesyłania wieloczęściowego / danych formularza? Kiedy w ogóle potrzebne będzie fałszywe ustawienie?
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;
});