2016-04-25 15 views
2

以下は、私のjavascriptファイルの内容です。クラスメソッド内のajaxポスト関数コールバック関数から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の非同期性のため、ポストが作られ、それが実行され続けているためこれがあります。それがアラートになると、それはヌルです。

解決策は、ポストのコールバックで関数を呼び出すことです。

関連する問題