2016-04-25 75 views
2

以下是我的JavaScript文件的內容。從類方法中的ajax post函數回調函數更改javascript類屬性

var inyavicsage = inyavicsage || {}; 

inyavicsage.TestClass = function() { 
    this.testProperty = null; 
} 

inyavicsage.TestClass.prototype = { 
    constructor: this, 
    testMethod: function() { 
     testClass = this; 

     $.post('test.php', function(data){ 
      testClass.testProperty = data; 
     }); 

     alert(testClass.testProperty); 
    } 
} 

var testClass = new inyavicsage.TestClass(); 
testClass.testMethod(); 

我想到的是,「警告(testClass.testProperty)」語句應顯示分配給「testClass.testProperty」中的「數據」變量的內容,而是它顯示「空」。

問題和解決方案是什麼?

回答

3

alert(testClass.testProperty)顯示null因爲發佈請求是異步的。

因此,基本上你會在設置屬性之前獲得屬性。 這將工作:

$.post('test.php', function(data){ 
    testClass.testProperty = data; 
    alert(testClass.testProperty); 
}); 
+0

那麼我該怎麼做才能使它工作? –

+0

對不起@InyavicSage對於後期重播,您將能夠獲取函數內部的數據,並在其中放置警報函數。 – maxgallo

0

這是因爲的JavaScript的異步特性,後由然後繼續運行。當它到達警報時它是空的。

解決方法是在回調帖子中調用一個函數