我如何在jQuery上引用该对象?
我正在创建一个脚本,每个函数内部都有一个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); });
您需要在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:这应该有效,假设您遇到的唯一问题是获得正确的值:
$("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); });