我在w3schools中看到有几种方法可以执行外部脚本:
因此,如果我理解正确,因为我在html文件的head部分中有以下脚本,而没有使用异步或延迟,那么应该首先执行它,然后浏览器将继续解析。
<script type="text/javascript" src="js/display.js"></script>display.js
$.ajax({
url:"fetch_items.php"
});fetch_items.php从数据库中获取一些项,并将它们放入数组$_SESSION("my_array")中。
因此,在html文件夹的正文部分,我使用驻留在$_SESSION("my_array")中的值来显示一些内容。
<?php
if(isset($_SESSION["my_array"]))
{
?>
<!-- html code echoing values from session -->
<?php
}
?>但是$_SESSION["my_array"]还没有设置,所以内容不会出现。(如果我重新加载页面,内容将正确显示)
为什么会发生这种情况?如何确保脚本在体加载之前完成了它的执行?下面仅引用脚本:如果不存在异步或延迟:在浏览器继续解析页面之前立即获取和执行脚本。
发布于 2018-02-19 02:04:56
AJAX代表“异步JavaScript和XML”。因此,它通过运行javascript代码从浏览器发出异步请求。当前代码从浏览器发出请求到服务器。然后,服务器使用PHP代码将数组保存到会话,而不是重新加载页面。这就是为什么您的数组没有立即打印。
坏解决方案:关于ajax请求的成功方法的刷新页面。
更好的解决方案:如果没有必要,不要将数组保存在会话中。在"fetch_items.php“处返回方法中的数组。然后使用ajax请求的成功回调打印数组。
下面是成功和打印方法的使用示例:Ajax response inside a div
有关更多信息,请阅读jquery文档:http://api.jquery.com/jquery.ajax/
发布于 2018-02-19 02:16:03
尝试将async : false放在ajax调用参数中。
https://stackoverflow.com/questions/48858493
复制相似问题