Jquery / Ajax Form Submission (enctype = "mehrteilig / Formulardaten"). Warum verursacht 'contentType: False' einen undefinierten Index in PHP?

Ich habe versucht, ein Formular mit enctype = "multipart / form-data" einzureichen. Ich habe diese Einstellung, weil das Formular JPEG / PNG-Uploads beinhalten wird, sobald ich die Ajax-Übermittlung für Texteingaben herausgefunden habe.

Das PHP funktioniert einwandfrei, wenn Sie auf das Skript verweisen, indem Sie eine Aktion innerhalb des HTML-Formulars ausführen.

Die Formulardaten werden von der folgenden Abfrage anscheinend korrekt abgerufen, da in der Warnzeile Folgendes angezeigt wird: productName = Test + Name & productDescription = Test + Beschreibung & OtherProductDetails =

Die zurückgegebenen Daten, die von der Funktion jquery success in meinem HTML-Code gedruckt wurden, sind ein PHP-Fehler, der besagt: Undefinierter Index: Produktname

Entfernen von contentType: false behebt das Problem.

Wenn ich jquery / ajax multipart / form-data Submission google, enthalten die Top-Hits zumindest hauptsächlich 'contentType: false'. Könnte mir bitte jemand den Grund erklären?

http://digipiph.com/blog/submitting-multipartform-data-using-jquery-and-ajax http://hayageek.com/jquery-ajax-form-submit/ Senden von mehrteiligen / Formulardaten mit jQuery.ajax

In der jquery-API-Dokumentation heißt es: contentType (Standard: 'application / x-www-form-urlencoded; charset = UTF-8') Typ: String Verwenden Sie diesen Inhaltstyp, wenn Sie Daten an den Server senden.

Warum müssen wir es für eine Übermittlung von mehrteiligen / Formulardaten auf false setzen? Wann wäre die falsche Einstellung überhaupt nötig?

Abfrage:

  $("#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;
  });

Antworten auf die Frage(2)

Ihre Antwort auf die Frage