我目前正在使用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;
}
});
};
};
在上面的所有情况中,似乎对象的副本而不是原始对象的副本正在传递给函数,因此原始值不是
改变。
有没有办法更改对象的原始值或传递原始值?我希望你能帮助我,我已经坚持了一段时间。
答案 0 :(得分:-2)
如果您向其他网站发送请求,则必须执行
crossDomain: true
或 如果要进行数据返回,则必须执行
async: true
示例:
var data_1 = 0;
ajax success function data_1 = data.data_1
return data_1;