题
我正在其内部具有一个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);
});
不隶属于 StackOverflow