Bezdepbonusu7Программирование: статьи и ответы

Вопрос

JQuery Ajax POST изменяет Content-Type в Firefox

Автор вопроса: ChrisОтветов: 1

Я делаю вызов Ajax для POST набора полей, объектов и массивов в PHP. В 9 случаях из 10 это работает просто отлично. Но при отправке одного и того же запроса несколько раз (без изменений данных) запрос будет время от времени отправляться с Content-Type: text/plain или text/html, а не application/x-www-form-urlencoded, вызывая проблемы в мой PHP. JSON может быть более целесообразным, но может ли кто-нибудь подумать, почему это может происходить?

  • Это не междоменный запрос.
  • Это происходит только в Firefox.
  • Я не думаю, что мне нужно указывать Content-Type, так как Ajax будет использоваться по умолчанию.
  • Я явно вызываю $.param(), но не думаю, что мне это нужно.
  • Я ожидаю JSON взамен.

    $.ajax({url: action,
       type: "POST",
       dataType: "json",
       data: $.param($(domElement).data()),
       complete: function() {
          // Cleanup
       },
       success: function(data) {
          // Handle success.
       },
       error: function() {
          // Handle error
       }
    });
    

jqueryajaxfirefoxcontent-type

Ответы

Ответ 1 · Magnus Engdal

Не уверен, почему это происходит только в Firefox, но помогает ли это, если вы устанавливаете тип контента вручную?

$.ajax({url: action,
   type: "POST",
   contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
   dataType: "json",
   data: $.param($(domElement).data()),

   complete: function() {
      // Cleanup
   },
   success: function(data) {
      // Handle success.
   },
   error: function() {
      // Handle error
   }
});

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы