Эффективный Java - необходимость, но я рекомендую быть довольным Java сначала, чтобы полностью понять примеры.
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)
Надеется, что это спасет кого-то еще от часов отладки ...
У меня была такая же проблема. Экранирование значений с помощью encodeURIComponent
сделало свою работу!
Это звучит как проблема кодирования. Если ваши данные не в формате UTF-8 (например, MS Word или что-то еще), это может произойти.
Я столкнулся с той же проблемой. Указание «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) {
}
});