【发布时间】:2013-09-30 01:48:22
【问题描述】:
是否可以在 jsonp Ajax 调用的回调中指定我们的特定上下文?
我发现这样做的唯一方法是指定回调名称但不实现它,因此回调进入带有所需上下文的成功方法:
$.ajax({
type: "GET",
url: 'someurl',
dataType: 'jsonp',
jsonpCallback: 'myCallbackName',
context: this,
success: function (response) {
console.log(this); //this must be the context specified earlier
}
});
问题是即使它正在工作,我也会收到很多错误:
TypeError: myCallbackName 不是函数
知道如何在不导致错误的情况下实现这一点吗?
谢谢
艾蒂安
【问题讨论】:
-
为什么上下文如此重要?为什么不能将
this存储在另一个变量中?我不明白为什么你不能不使用 jsonpCallback 并且仍然使用上下文。我的猜测是'someurl'没有返回有效的 jsonp。 -
尝试在函数调用中添加
.call(context, arguments) -
我在不同的上下文中多次触发这个 ajax,在另一个变量中管理上下文似乎有点复杂......
-
正如问题中提到的,ajax 调用返回有效的 jsonp,因为一切正常......问题是我这样做的方式有点 hacky,因为我指定了一个回调函数没有实现强制回调成为成功方法......所以我想摆脱的唯一问题是错误消息......
-
你为什么要指定一个不存在的回调呢?它不会强迫成功的方法。如果您没有指定回调,则会调用成功方法。所以只需将上下文保存在全局变量中并编写回调函数即可。