我正在使用 jQuery 1.9.1 对 Etsy API 执行 jsonp。下面是一个用于调用 API 的例程;它接受一个签名的请求(url)、一个 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);
它有效。myCallback
触发,收到的 json 对象看起来不错。一切安好。
除了...
完成后myCallback
,错误处理程序立即运行。在错误处理程序中,状态码为 200,错误消息为"parsererror"
. errorThrown.message 是"myCallback was not called"
. 事情是,肯定myCallback
被调用并且传递给它的 json 对象被解析得很好,所以我根本不明白。
为什么在其他成功的调用中会引发此错误?