JavaScript& jQuery:调用内部函数

时间:2013-04-06 11:10:21

标签: javascript jquery

我在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();

1 个答案:

答案 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);
        });
    }
}