我正在制作一个脚本,其中每个函数内都有一个 ajax 调用。问题是,在 ajax 调用的成功回调中,我想使用我们在每个函数中使用的对象。
编辑: 这是我的一些代码:
configs={
general:{
max_ads:6},
logs:{
selector:"div#MicrodualGetAd-debug"},
connection:{
type:"POST",
url:"http://www.microdual.com/api/microdualgetad",
cache:false,
timeout:20000,
dataType:"json",
data:{
adget_id:null,
adget_session:null,
client_action:null},
error:function(r,s,e){
MicrodualGetAdLog("Ajax-Error: "+s+"\n");
}
}
};
$("div.MicrodualGetAd").each(function(){
configs.connection.data.adget_id = $(this).attr("rel");
configs.connection.data.client_action = "view";
configs.connection.data.success = function(d,s,r){
$(this).hide();
alert("'OK'");
if(d.hackattemp.status){
MicrodualGetAdLog("MicrodualGetAd-Error: "+d.hackattemp.msg+"\n");
$(this).append(d.hackattemp.msg);
}
}
$.ajax(configs.connection);
});
最佳答案
您需要将 this
的值保存在 each
回调中。
$("#hello").each(function() {
var that = this;
$.ajax({
url: "www.mysite.com/mypage",
success: function(d) {
hello.call(that);
}
});
})
此外,您应该以不同的方式检查 d
的值;要么
if (typeof d === 'undefined' && d !== '') ...
或者简单地
if (d) ...
编辑 1:这应该可行,假设您遇到的唯一问题是获取 this
的正确值:
$("div.MicrodualGetAd").each(function() {
var $this = $(this);
configs.connection.data.adget_id = $this.attr("rel");
configs.connection.data.client_action = "view";
configs.connection.data.success = function(d, s, r) {
$this.hide();
alert("'OK'");
if (d.hackattemp.status) {
MicrodualGetAdLog("MicrodualGetAd-Error: " + d.hackattemp.msg + "\n");
$this.append(d.hackattemp.msg);
}
}
$.ajax(configs.connection);
});
关于ajax - 我如何在 jQuery 上引用该对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3601149/