我正在使用jQuery 1.9.1對Etsy API執行jsonp。以下是用於調用API的例程;它接受一個簽名請求(url),一個jsonp回調名稱和一個錯誤處理程序。jQuery ajax jsonp在成功後調用錯誤
call: function (signedOAuthRequest, callback, errorFn) {
$.ajax({
url: signedOAuthRequest,
type: "GET",
dataType: "jsonp",
jsonpCallback: callback,
jsonp: false,
crossDomain: true,
cache: true,
processData: false,
error: function (jqXHR, textStatus, errorThrown) {
if (errorFn != undefined) {
errorFn(jqXHR, textStatus, errorThrown);
}
}
});
用法:
call("http://the.api/?signedrequest", "myCallback", myErrorHandler);
和它的作品。接收到的json對象看起來不錯。一切安好。
除...
緊接着myCallback
完成,錯誤處理程序運行。在錯誤處理程序中,狀態碼是200,錯誤消息是"parsererror"
。 errorThrown.message是"myCallback was not called"
。事情是,myCallback
是肯定調用和傳遞給它的JSON對象被解析得很好,所以我沒有得到這一點。
爲什麼在其他成功的調用上拋出此錯誤?
舉動回調'成功:callback',刪除'JSONP:FALSE',刪除'jsonpCallback',刪除'cache:true','type:「get」'也不需要。 'processData'也是不需要的。 –
如果您不想在窗口上定義自己的回調,請不要使用jsonp數據類型,只需使用getScript。 –
並通過'myCallback'而不是''myCalback''作爲'callback'參數 – Igor