Jquery AJAX POST без dataType и contentType - PullRequest
0 голосов
/ 24 апреля 2020

У меня был AJAX вызов следующим образом:

I have an ajax get as follows:

        $.ajax({
                url: url,
                type: "GET",
                data: model,
                dataType: "html",
                contentType: "application/json; charset=utf-8",

, поскольку в моей модели была большая строка, я изменил ее на POST следующим образом:

        $.ajax({
                url: url,
                type: "POST",
                data: model,
                dataType: "html",
                contentType: "application/json; charset=utf-8",

Я заметил, что он не смог правильно добраться до URL, поэтому я удалил dataType и contentType следующим образом:

            $.ajax({
                url: url,
                type: "POST",
                data: model,
                dataType: "html",
                ...

Вышеописанное работало нормально. Есть ли какая-либо опасность, если вы пропустите dataType и contentType при выполнении POST?

1 Ответ

1 голос
/ 24 апреля 2020

Если вы опустите dataType, он не установит заголовок Accept и определит, как анализировать ответ из заголовка Content-Type .

Если вы не Не устанавливайте contentType, для него будет установлено значение по умолчанию в зависимости от типа данных, которые вы передаете data. Предполагая, что model является простым объектом, это будет формат application/x-www-form-urlencoded, и объект будет закодирован в этом формате.


Нет смысла устанавливать contentType для запроса GET: не является телом запроса для описания типа содержимого

Ваш код сломался, когда вы изменили его на POST, потому что вы не отправляли JSON и заголовок Content-Type request стал значимым (поскольку данные были сейчас в теле).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...