将对象传递给$ .ajax succes函数

时间:2018-04-13 18:18:01

标签: javascript jquery ajax

我目前正在使用javascript和jquery开展项目。 我正在使用$.ajax调用向服务器询问一些数据。此调用是在我创建的对象中进行的。

成功之后,我想用收到的数据更新此类对象的数据成员。它看起来像这样:

function Caller() { 
    this.data1 = 0; 
    this.data2 = 1; 
    this.makeRequest = function () {
        $.ajax({
            url: "some url",
            data: somedata,
            dataType: "json",
            success: function ( data ) {
                // update data
            }
        });
    };
};

为了将原始对象(Caller)传递给succes函数,我尝试了以下内容:

function Caller() { 
    this.data1 = 0; 
    this.data2 = 1; 
    this.makeRequest = function () {
        var _this = this;
        $.ajax({
            url: "some url",
            data: somedata,
            dataType: "json",
            success: function ( data ) {
                // update data
                _this.data1 = data.data1;
                _this.data2 = data.data2;
            }
        });
    };
};

然后我尝试了:

function Caller() { 
    this.data1 = 0; 
    this.data2 = 1; 
    this.makeRequest = function () {
        $.ajax({
            url: "some url",
            data: somedata,
            dataType: "json",
            _this: this,
            success: function ( data ) {
                // update data
                var _this = this._this
                _this.data1 = data.data1;
                _this.data2 = data.data2;
            }
        });
    };
};

然后:

function Caller() { 
    this.data1 = 0; 
    this.data2 = 1; 
    this.makeRequest = function () {
        $.ajax({
            url: "some url",
            data: somedata,
            dataType: "json",
            context: this,
            success: function ( data ) {
                // update data
                this.data1 = data.data1;
                this.data2 = data.data2;
            }
        });
    };
};

在上面的所有情况中,似乎对象的副本而不是原始对象的副本正在传递给函数,因此原始值不是 改变。
有没有办法更改对象的原始值或传递原始值?我希望你能帮助我,我已经坚持了一段时间。

1 个答案:

答案 0 :(得分:-2)

如果您向其他网站发送请求,则必须执行

crossDomain: true

或 如果要进行数据返回,则必须执行

async: true

示例:

var data_1 = 0;
ajax success function data_1 = data.data_1
return data_1;