The*_*ist 5 jquery jsonp object callback
当ajax提供程序预定义其回调时,我遇到了将javascript对象上下文传递给JSONP ajax请求的回调处理程序的问题.(Flickr是服务提供商).
我将举一个简化的例子:
function Person(anId) {
this.name;
this.id = anId;
var self = this;
this.loadName = function() {
$.ajax({
url: "jsonp.json",
dataType: "jsonp",
jsonpCallback : "handleJSON",
data : {id: this.id},
context: self,
success: function (data) {
self.name = data.name;
}
});
}
}
var handleJSON = function(data) {
console.log("received " + data.name );
}
var a = new Person(234);
a.loadName();
var b = new Person(345);
b.loadName();
上面的示例工作正常,控制台输出handleJSON函数的行.但是在这个函数中我没有引用调用它的原始对象.我希望调用成功函数:这里我可以引用自变量.
有几种可能的解决方案,但我没有任何运行.
目前我找到了一个使用谷歌代码的jquery-jsonp的解决方案.但我仍然非常好奇如何解决问题,如2所述.因为我认为jQuery引用声明它可以像这样处理.是什么让我可以依赖较少的第三方图书馆.
有人可以告诉我如何使用jQuery访问JSONP回调处理程序中的上下文?
Guf*_*ffa 13
只需保留jsonpCallback属性,让jQuery创建被调用的函数和它的函数名.该函数将使用您指定的上下文调用您指定的成功回调.
function Person(anId) {
this.name;
this.id = anId;
this.loadName = function() {
$.ajax({
url: "jsonp.json",
dataType: "jsonp",
data : {id: this.id},
context: this,
success: function (data) {
this.name = data.name;
}
});
}
}
var a = new Person(234);
a.loadName();
var b = new Person(345);
b.loadName();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20902 次 |
| 最近记录: |