gpt4 book ai didi

jquery - 如何将对象上下文传递给 jQuery.ajax JSONP 回调?

转载 作者:行者123 更新时间:2023-12-03 22:57:34 26 4
gpt4 key购买 nike

当 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函数的行。但在这个函数中,我没有对调用它的原始对象的引用。我希望改为调用 success 函数:在这里我可以引用 self 变量。

有几种可能的解决方案,但我没有得到任何运行。

  1. 我将拦截 jQuery 为我生成的回​​调名称,并将其作为 jsonpCallback 参数中的值。我认为该函数委托(delegate)给指定的 success 函数,我可以从中访问它。但我不知道如何获取该生成的名称。
  2. 我将像在示例中那样指定上下文对象。 jQuery 文档指出该对象可用于回调处理程序。但是我找不到这个上下文是如何暴露给例如我的示例中的 handleJSON 函数。

目前我从谷歌代码中找到了 jquery-jsonp 的解决方案。但我仍然很好奇如何解决 2 中描述的问题。因为我认为 jQuery 引用声明可以这样处理。是什么让我对第三方库的依赖减少了。

有人可以告诉我如何使用 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();

关于jquery - 如何将对象上下文传递给 jQuery.ajax JSONP 回调?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3399997/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com