为什么没有这项工作
我通过jquery在一个对象中有一个ajax函数,并且由于某种原因它是 没有看到回调函数内对象中的其他函数。
function object () {
this.test = function () { alert ("test") }
this.makeQuery = function() {
$.ajax( {
url: stuff,
dataType: "xml",
success: function (data) { makeData(data) } } )
}
this.makeData = function (data) {
this.test(); // Error "this.test() is not a function"
}
}
答案 0 :(得分:1)
原因是因为使用不同的“this”调用回调函数。在jQuery.ajax调用的情况下,“this”函数是jqXHR对象http://api.jquery.com/Types/#jqXHR。因此,如果要将“this”对象传递给回调,则必须在范围内捕获它并引用捕获的变量。像这样(如果我修复了所有语法错误):
function myFunction() {
var that = this;
this.test = function () { alert ("test") };
this.makeQuery = function() {
jQuery.ajax({
type: 'post',
url: 'someUrl',
dataType: 'json',
success: function (data, textStatus, jqXHR) {
that.makeData(data);
},
error: function (jqXHR, textStatus, textError) {
}
});
};
this.makeData = function(data) {
this.data = data
this.test(); // Error "this.test() is not a function"
};
}
var m = new myFunction();
m.makeQuery();