2013-04-06 122 views
0

我在JavaScript和jQuery中使用集成的ajax请求获得以下代码。 问:为什么可以调用内部函数success1(),但不可能调用this.success2()?针对此问题的任何解决方案建议JavaScript和jQuery:调用内部函数

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(); 
+2

试试这个。 – 2013-04-06 11:13:56

+0

您可能想看看http://stackoverflow.com/questions/3127429/javascript-this-keyword的接受答案,以获得对JavaScript的“this” – Exupery 2013-04-06 13:44:25

回答

1

至于其他的评论中,this发送函数内部的情况下被改变,所以这就是为什么你success2功能不调用。您应该在变量中保存myFunction上下文,并使用该变量来引用this上下文。因为回调,`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); 
     }); 
    } 
}