2015-10-05 62 views
0

我正在用PHP導入一些數據,PHP從SQL數據庫獲取數據。我使用AJAX將數據從PHP導入到Javascript。 PHP代碼工作正常,並導致「2」,但什麼是錯的我的Javascript代碼:我的JSON.parse出了什麼問題,爲什麼代碼沒有按照外觀順序執行?

<script> 
    $.getJSON("Kategorie1.php", function (data) { 
     window.nrFragen = JSON.parse(data); 
     window.alert(data) 
    }); 
    window.alert(window.nrFragen); 
</script> 

如果我運行它,它第一次運行window.alert(window.nrFragen)它提醒undefined然後window.alert(data),它提醒「2」,作爲這應該。

它爲什麼第一次運行window.alert(window.nrFragen),即使它是在window.alert(data)之後寫的?而且,爲什麼不是window.nrFragen = JSON.parse(data);工作?

+0

這是因爲'getJSON'是一個異步調用。它不會等待。 –

+1

「從php文件導入數據到一個js文件」 - 耶穌 – m02ph3u5

回答

1

$.getJSON是異步的。

$.getJSON("Kategorie1.php", function (data) { 
    //this will be called only after request completion 
    window.nrFragen = JSON.parse(data); 
    window.alert(data) 
}); 
//this will be called immediately after $.getJSON, it won't wait for request completion 
window.alert(window.nrFragen); 
+0

哦,好的,謝謝。我能做些什麼來讓程序知道要等到數據在這裏? – loelu

+0

'$ .getJSON'的第二個參數是成功處理程序,它將在請求成功完成時調用。所以在這個回調_data已經在這裏。你最好閱讀[文檔](http://api.jquery.com/jquery.getjson/)。還請閱讀一些關於異步JavaScript(或任何其他語言)編程的文章,例如[this](http://www.html5rocks.com/en/tutorials/async/deferred/)。 – ieaglle

+0

不知道我是否正確理解了你,我需要其他代碼的數據,所以我應該讓其餘的代碼在'window.nrFragen = JSON.parse(data);'後運行' – loelu

相關問題