在保留“的范围”的同时检索响应;这";使用jqueryajax

在保留“的范围”的同时检索响应;这";使用jqueryajax,jquery,ajax,closures,jscript,Jquery,Ajax,Closures,Jscript,我使用了一个闭包来设置这一点,但现在我当然失去了“响应”。有人知道在这个实例中检索响应数据的方法吗 var form = { name: 'great form', load:function() { $.ajax({ url: "get/data", type: "POST", success: function(_this){ console.log(_thi

我使用了一个闭包来设置这一点,但现在我当然失去了“响应”。有人知道在这个实例中检索响应数据的方法吗

var form = {       
    name: 'great form',    
    load:function() {
        $.ajax({
        url: "get/data",
        type: "POST",
        success: function(_this){
                console.log(_this.name);     // outputs : "great form"
                console.log(response.data);  // response is undefined
        }(this)
    });
};

您不希望将此作为success函数的参数(您的做法是立即调用函数,而不是等待jQuery在成功时调用函数),您可以将其作为变量与
ajax
调用一起创建:

var form = {       
    name: 'great form',    
    load:function() {
        var _this = this; // <=== Here
        $.ajax({
        url: "get/data",
        type: "POST",
        success: function(response){
                console.log(_this.name);     // outputs : "great form"
                console.log(response.data);  // response is undefined
        }
    });
};
var form={
名称:“伟大的形式”,
加载:函数(){

var _this=this;//您不想将参数更改为成功处理程序。成功处理程序的第一个参数是您的ajax响应数据,因此您需要将其视为成功处理程序

要访问成功处理程序中的
this
指针,有几种方法。我认为最优雅的一种方法是,jQuery允许您在上下文中传递希望
this
在成功回调中设置为
$.ajax()
函数的参数之一,如下所示:

var form = {       
    name: 'great form',    
    load:function() {
        $.ajax({
        context: this,      // sets 'this' pointer for success callback
        url: "get/data",
        type: "POST",
        success: function(response){
                console.log(this.name);      // outputs : "great form"
                console.log(response.data);  // ajax response data
        });
    });
};

太棒了!!真不敢相信我以前从来都不知道上下文参数。回到这里,不要再说了!谢谢!!