2012-01-13 162 views
0

我一定在做錯事。我希望下面的代碼可以更新和訪問全局變量'gvar',但它不會。我在做什麼錯誤?Javascript更新和訪問變量功能

<script type="text/javascript"> 
    var gvar; 
    $(function() {      
     $(document).ready(function() { 
      $.getJSON("json.php", function (myData) { 
       $.each(myData.tag, function (t, myData) { 
        if(myData.myId != null) { 
         gvar = myData.myId; 
        } 
       }); 
       return false; 
      }) 
     }); 
    }); 
</script> 

<script type="text/javascript"> 
    alert(gvar); 
</script> 
+0

你有沒有試過alert(gvar);功能外? – Dev 2012-01-13 11:47:15

+2

這是您的示例代碼中的拼寫錯誤嗎?你確實提醒(myId),而不是提醒(gvar)。除此之外,它應該工作。 – Archer 2012-01-13 11:48:17

+0

是的,對不起,打字錯誤...應該是警惕(gvar)...仍然不會返回任何東西 – echez 2012-01-13 11:53:36

回答

3

gvar只在dom準備就緒後才被填充。但是,只要解析代碼的一部分,就會執行警報。嘗試在ready()函數的末尾放置警報。

@Yoshi有另一個好點我剛剛錯過了:變量的人口甚至延遲,直到請求已成功執行。爲了測試它,你可以設置幾秒鐘的超時時間,然後提醒變量。此時該請求應該已經結束,並且該變量將具有可以提醒的值。但是這只是爲了測試變量是否在全局範圍內工作,因爲當在回調中提醒時,當然變量已經設置在警報的正上方。 ;)

+0

我有一個修復,但顯然,我不能將代碼作爲答案發布,直到6小時後。無論如何,非常感謝你們! – echez 2012-01-13 12:47:01

+0

我的回答是否有幫助?也許你可以在簡短的評論中描述你的解決方案。 – Connum 2012-01-13 13:18:02