2015-10-05 28 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

相关问题