2011-05-30 45 views
0

可能重複:
Why is this global variable not being changed???jQuery的問題與可變

嗨,有這樣的代碼通過AJAX權威性地我的應用程序:

 var myAuth = false; 
     $.ajax({ 
      type: 'POST', 
      url: 'loading.php', 
      data: { token: 123456789}, 
      success: function(data){ 
       if (data.response == 'OK'){ 
        myAuth = true; 
       }else{ 
        myAuth = false; 
       } 
      } 
      });  

if (myAuth == true){ 
do something 
} 

爲什麼myAuth沒有得到響應後的值是否正確?

+0

看起來,在你的代碼中,你試圖在$ .ajax調用之後立即捕獲myAuth值,這是非常奇怪的,並且在那個時候可能不會是真的。在服務器響應之後,您應該調用一個函數,而不是設置myAuth = true。 – Tuco 2011-05-30 01:20:28

回答

2

由於XHR運行異步(在您的示例中使用時)。

您需要將該代碼放在success回調中。

目前,條件是在請求完成後立即評估,而不是在請求完成時評估。因此,myAuth始終設置爲其初始值false

另一種方式是使請求同步,但這會在請求打開時鎖定瀏覽器UI,因此被認爲是不正確的做法。