2014-04-17 45 views
-1

正如標題所說,我有一個ajax函數用於調用一個函數,該函數可以從我的mysql數據庫中爲js中的變量賦值。成功後,我可以打印回顯數據,並且它顯示在控制檯中。但是,在ajax調用之後調用變量會生成一個空變量。到底是怎麼回事?下面變量在ajax後出現空白,但在ajax成功函數中有值

代碼:

request = $.ajax({ 
         url: "/fans/get_url_tag", 
         type: "post", success:function(data){url_tag = data; console.log(url_tag); //prints the correct value}, 
         data: {'fbid': result.id} ,beforeSend: function(data){console.log(data);} 
        }); 

//prints nothing 
console.log(url_tag) 
+2

因爲調用是異步的! – epascarello

回答

0

你需要把console.log回調函數。

+0

整點是我希望它有ajax調用後的值,而不僅僅是在回調函數中。 – user1072337

+0

您將不得不等待AJAX​​調用完成訪問變量。您已在AJAX調用之後放置的'console.log'在'url_tag'被賦予值之前執行。這是否回答你的問題? – Neel

+0

我想我能做些什麼來訪問ajax調用後的變量? – user1072337

1

聽起來像是範圍是錯誤的。 也許只是你的$就調用之前聲明它:

var url_tag; 
request = $.ajax({ 
        url: "/fans/get_url_tag", 
        type: "post", success:function(data){url_tag = data; console.log(url_tag);}, 
        data: {'fbid': result.id} ,beforeSend: function(data){console.log(data);} 
       }); 

console.log(url_tag); //Should print the same value 
+0

我確實在之前申報過。它仍然不起作用。 – user1072337

+0

Neel是對的,ajax調用是異步的,所以當你運行第二個console.log調用時,請求還沒有完成。所以這不是範圍問題,而是時間問題。在請求完成時執行的回調將設置變量,並且任何運行後的代碼都可以訪問該變量及其設置值。 –