javascript - 如何在 Ajax 成功函数中获取脚本级变量?

标签 javascript jquery ajax cross-domain

在我的 javascript 文件中,我无法访问 Ajax 成功函数中的脚本级变量。见以下代码:

MyApplication.Test = Class.extend({


    ...
    ...

    testElement : null,

    ...
    ...

    updateElementBackground : function(url)
    {
        if(url.length > 0) {
        var response =  $.ajax(url ,{
                     contentType : "application/json",

                     headers: {"Access-Control-Request-Headers": "X-requested-with"}, 
                     type : "GET",
                     success : function(data) {
                          this.testElement.css("backgroundImage","url('"+url+data+"')"); // testElement is undefined now. here this refers to the Ajax call
                     },
                     error : function(e) {
                         errorCallback(e);
                      }
                  });
                  }
                  else
                  {
                    this.testElement.css("backgroundImage","testImage.jpg"); // testElement is accessible here
                  }
    }
});

如何在 Ajax 成功函数中获取 "testElement"

最佳答案

当您尝试获取this.testElement 时,您访问了success 函数的this。并且没有 testElement 属性。

尝试在 updateElementBackground 范围内预定义 this

updateElementBackground : function(url)
{
    var that = this;        
    var response =  $.ajax(url ,{
          success : function(data) {
               that.testElement.css("backgroundImage","url('"+url+data+"')"); 
          },
       });

}

关于javascript - 如何在 Ajax 成功函数中获取脚本级变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23929934/

相关文章:

javascript - 使用关闭操作在输入中添加关闭图标

javascript - Ajax请求传递参数失败

javascript - JQuery:从 .each() 选择器中排除元素?

javascript - Jquery 在网站加载时淡入图像

javascript - Bower 和 npm 有什么区别?

javascript - 使用ajax获取不需要的字符串

javascript - jQuery Masonry——限制窗口调整事件的最大宽度?

javascript - 重新加载 jquery 和 js 库

javascript - 使用datatable ajax响应数据设置自定义标签值

javascript - MVC 5 中的数据库自动完成?