如何将对象上下文传递给jQuery.ajax JSONP回调?
当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(); 职能人员(anId){ 这个名字; this.id=anId; var self=这个; this.loadName=函数(){ $.ajax({ url:“jsonp.json”, 数据类型:“jsonp”, jsonpCallback:“handleJSON”, 数据:{id:this.id}, 背景:自我, 成功:功能(数据){ self.name=data.name; } }); } } var handleJSON=函数(数据){ console.log(“已接收”+data.name); } var a=新员工(234); a、 loadName(); var b=新员工(345); b、 loadName(); 上面的例子工作得很好,控制台输出handleJSON函数的行。但是在这个函数中,我没有对调用它的原始对象的引用。我希望调用success函数:这里我可以引用self变量 有几种可能的解决方案,但我没有得到任何运行如何将对象上下文传递给jQuery.ajax JSONP回调?,jquery,object,callback,jsonp,Jquery,Object,Callback,Jsonp,当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", jso
有人能告诉我如何使用jQuery访问JSONP回调处理程序中的上下文吗?只需保留
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();
谢谢你的快速回复。您的答案似乎很简单,但我的服务提供商总是将JSON封装在自己的回调中:jsonFlickrApi({JSON}),并且生成的回调jQuery名称被忽略。如果提供参数“jsoncallback=handleJSON”,则可能会影响回调名称,但这也不是选项,因为这样我只能传递一个全局作用域函数名,我需要传递一个对象作用域函数名。@hobbiest:在这种情况下,您可以使用
jsonpCallback
属性指定'jsonFlickrApi'
作为函数名,但不创建函数。ajax
方法将为您创建函数。解决方案在上一篇评论文章中解释过,但它生成错误,指出回调函数不存在。。。