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;
  });

questionAnswers(2)

yourAnswerToTheQuestion