我使用JSONP調用跨域AJAX請求。現在,我可以使用CORS進行工作。但是,我想知道爲什麼它不會發生與JSONP。我看着其他類似問題的線程,但無法弄清楚爲什麼它不適用於我的情況。有效的JSON輸出JSONP解析錯誤
下面是代碼:
$.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":""}}
當我在jsonlint上運行這個JSON輸出時,它說它是一個有效的JSON。我不知道JSON在哪裏變得混亂。
的ERR可以共享'myJsonMethod'代碼? – Venky
你需要在myJsonMethod中包裝你的json(... yourJSONhere ...)。這意味着JSONP – Maxx
有效的JSON與有效的JSONP不是一回事。這就是問題所在 - 你試圖使用一個返回JSON的API,就好像它是一個JSONP API一樣,而這根本行不通。 – Pointy