Jquery / Ajax Form Submission (enctype = «multipart / form-data»). Почему «contentType: False» вызывает неопределенный индекс в PHP?

Я пытался отправить форму с enctype = "multipart / form-data". У меня есть этот параметр, потому что форма будет включать загрузку в формате jpeg / png после того, как я выяснил, что ajax отправит текстовый ввод.

PHP работает нормально при обращении к сценарию с помощью действия в форме HTML.

данные формы, похоже, корректно извлекаются с помощью приведенного ниже jquery, поскольку в строке предупреждения отображается: productName = Test + Name & productDescription = Test + Description & OtherProductDetails =

возвращенные данные, напечатанные в мой HTML с помощью функции успеха jquery, представляют собой ошибку php: неопределенный индекс: productName

удаление contentType: false устраняет проблему.

Когда я отправляю в Google jquery / ajax multipart / form-data, самые популярные из них, по крайней мере, включают «contentType: false». Пожалуйста, кто-нибудь может объяснить мне причину?

http://digipiph.com/blog/submitting-multipartform-data-using-jquery-and-ajax http://hayageek.com/jquery-ajax-form-submit/ Отправка multipart / formdata с помощью jQuery.ajax

Документация по jquery API гласит: contentType (по умолчанию: 'application / x-www-form-urlencoded; charset = UTF-8') Тип: String При отправке данных на сервер используйте этот тип контента.

Зачем нам нужно устанавливать его в false для многоэлементной / формы данных? Когда вообще понадобится ложная настройка?

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

Ответы на вопрос(2)

Ваш ответ на вопрос