Я звоню в AJAX-запрос кросс-домена, используя JSONP. Теперь я могу заставить его работать с помощью CORS. Но, я хочу знать, почему это не происходит с JSONP. Я смотрел на другие темы с подобной проблемой, но не мог понять, почему он не работает в моем случае.Ошибка JSONP Parse с действительным выводом JSON
Вот код:
$.ajax({
type: "GET",
url: http://XXXX:8000/sap/bc/test_rest/jsonp_test?mode=S&ticket=123,
dataType: "jsonp",
jsonp: false,
jsonpCallback: "myJsonMethod",
success: function (data) {
alert(data);
},
error: function (httpReq, status, exception) {
alert(status + " " + exception);
}
});
Теперь это вызывает мой сервер, данные заполняется, а затем я получаю предупреждение «Ошибки синтаксического анализа myJSONMethod не называется» на обратный вызов URL http://xxxx:8000/sap/bc/test_rest/jsonp_test?mode=S&ticket=123&_=1470322282936
Кроме того, в консоли я получаю сообщение об ошибке, как неперехваченных SyntaxError: Неожиданный маркер: структура ответа:
{"ROOT":{"CONTRACT":"40002356","ITEM":"000010","KUNNR":"0000004676","NAME":"REALTY EXECUTIVES","NET_PRICE":19.95,"GROSS_PRICE":19.95,"MATNR":"144","SQFEET":""}}
Когда я запускаю этот вывод JSON на jsonlint, он говорит, что это действительный JSON. Я не знаю, где JSON запутался.
Можете ли вы поделиться 'myJsonMethod' кодом? – Venky
вам нужно обернуть свой json в myJsonMethod (... yourJSONhere ...). Это означает, что JSONP – Maxx
Действительный JSON - это не то же самое, что и действительный JSONP. В этом проблема - вы пытаетесь использовать API, который возвращает JSON, как если бы это был JSONP API, и это просто не сработает. – Pointy