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

Я делаю вызов 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
       }
    });
    

person Chris    schedule 18.12.2013    source источник


Ответы (1)


Не уверен, почему это происходит только в 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
   }
});
person Magnus Engdal    schedule 18.12.2013
comment
Попытка это. Кажется, количество вхождений уменьшилось, но я все равно их вижу. Интересно, имеет ли это какое-то отношение к тому, как или когда Ajax определяет тип контента и к тому факту, что мои данные прикреплены к объекту DOM через jQuery. - person Chris; 19.12.2013
comment
Это кажется правильным: если я использую .val() вместо .data для элемента dom, я получаю заголовки типа содержимого. - person therealjeffg; 19.12.2013