我正在编写一个脚本,在每个函数中都有一个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);
});
答案 0 :(得分:4)
您需要在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);
});