我在JavaScript和jQuery中有以下代码,带有集成的ajax请求。
问题:为什么可以调用内部函数success1()
但是无法调用this.success2()
?有关此问题的任何解决方案建议吗?
function myfuntion() {
this.url = "www.example.com/ajax.php";
var success1 = function (data) {
alert("SUCCESS1");
}
this.success2 = function (data) {
alert("SUCCESS2");
}
this.send = function () {
$.ajax({
type: "POST",
url: this.url,
dataType: "html"
}).done(function (data) {
success1(data);
this.success2(data);
});
}
}
var test = new myfunction().send();
答案 0 :(得分:1)
正如其他人评论的那样,发送函数中this
的上下文发生了变化,这就是你的success2
函数没有调用的原因。您应该在变量中保存myFunction
上下文,并使用该变量来引用this
上下文。
试试这个:
function myfuntion() {
var self = this; // taking the current context in a variable.
self.url = "www.example.com/ajax.php";
var success1 = function (data) {
alert("SUCCESS1");
}
self.success2 = function (data) {
alert("SUCCESS2");
}
self.send = function () {
$.ajax({
type: "POST",
url: self.url,
dataType: "html"
}).done(function (data) {
success1(data);
self.success2(data);
});
}
}