Непонятное поведение jQuery $ .ajax (), когда данные содержат последовательные вопросительные знаки

Эффективный Java - необходимость, но я рекомендую быть довольным Java сначала, чтобы полностью понять примеры.

28
задан Rolf 22 July 2019 в 10:34
поделиться

4 ответа

jQuery использует ?? в качестве заполнителя для функции обратного вызова при использовании jsonp. Когда он анализирует Ajax-запрос и находит двойной вопросительный знак (или несколько вопросительных знаков), он автоматически предполагает, что вы пытаетесь использовать jsonp. Когда вы устанавливаете тип содержимого вручную, он игнорирует вопросительные знаки.

Итак, избегайте проблемы, используя contentType:

$.ajax(
    url: "your-url.php",
    dataType: "json",                 // what you expect the server to return
    contentType: "application/json",  // what you are sending
    ...
);

Для справки:

jQuery Bugtracker: $ .AJAX ИЗМЕНИЛ СОДЕРЖАНИЕ ПОЧТЫ, ЕСЛИ ВКЛЮЧАЯ «??» (2 QUESTION MARK)

Надеется, что это спасет кого-то еще от часов отладки ...

25
ответ дан 28 November 2019 в 03:27
поделиться

У меня была такая же проблема. Экранирование значений с помощью encodeURIComponent сделало свою работу!

1
ответ дан 28 November 2019 в 03:27
поделиться

Это звучит как проблема кодирования. Если ваши данные не в формате UTF-8 (например, MS Word или что-то еще), это может произойти.

1
ответ дан 28 November 2019 в 03:27
поделиться

Я столкнулся с той же проблемой. Указание «contentType»: «application / json; charset = utf-8» решает эту проблему.

jQuery.ajax({
    "url": url,
    "data": JSON.stringify(payload),
    "type": "POST",
    "dataType": "json",
    "contentType":"application/json; charset=utf-8",
    "success": function(data) {

    },
    "error": function(jqXHR, textStatus, errorThrown) {

    }
});
1
ответ дан 28 November 2019 в 03:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: