ajax - 我如何在 jQuery 上引用该对象?

标签 ajax jquery this each

我正在制作一个脚本,其中每个函数内都有一个 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/

相关文章:

jquery - 如何确定 "DataTables"Jquery Plugin是否正确初始化?

javascript - 当整个页面在谷歌浏览器中模糊时,模糊被触发两次

jquery - 调整浏览器大小时的导航菜单宽度

jquery - 如何使用 jQuery 根据文本区域的输入加载表单?

c# - 什么是 'this' 构造函数,它有什么用

JavaScript jQuery 在 AJAX 之后不工作

javascript - 如何为每个帖子添加一个 eventListener(不使用 jQuery)?

javascript - 收到响应后 XMLHttpRequest 对象是否关闭?

javascript - 在 javascript 函数中发送此参数

javascript - 函数内的函数作用域 - Javascript