gpt4 book ai didi

javascript - 在 body 加载之前完成 ajax 调用

转载 作者:行者123 更新时间:2023-12-03 02:27:56 26 4
gpt4 key购买 nike

我在 w3schools 中读到,有多种方法可以执行外部脚本:

  1. 如果存在异步:脚本与页面的其余部分异步执行(脚本将在页面继续解析时执行)
  2. 如果 async 不存在且 defer 存在:页面解析完成后执行脚本
  3. 如果 async 或 defer 均不存在:在浏览器继续解析页面之前,会立即获取并执行脚本。

所以,如果我理解正确的话,因为我的 html 文件的 head 部分有以下脚本如果不使用 async 或 defer,它应该首先执行,然后浏览器将继续解析。

<script type="text/javascript" src="js/display.js"></script>

显示.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"] 尚未设置,因此内容不会显示。 (如果我重新加载页面,内容将正确显示)

为什么会发生这种情况?我如何确保脚本在正文加载之前完成执行?以下仅指脚本:如果 async 或 defer 都不存在:在浏览器继续解析页面之前,将立即获取并执行脚本。

最佳答案

AJAX 代表“异步 JavaScript 和 XML”。因此,它通过运行 JavaScript 代码从浏览器发出异步请求。您当前的代码从浏览器向服务器发出请求。然后服务器使用您的 PHP 代码将您的数组保存到 session 中,并且不会重新加载页面。这就是为什么你的数组没有立即打印的原因。

错误的解决方案:刷新有关ajax请求成功方法的页面。

更好的解决方案:如果不是真的有必要,请不要将数组保留在 session 中。在“fetch_items.php”的方法中返回您的数组。然后使用 ajax 请求的成功回调打印数组。

这里是成功和打印方法的使用示例:Ajax response inside a div

更多信息您可以阅读jquery api文档:http://api.jquery.com/jquery.ajax/

关于javascript - 在 body 加载之前完成 ajax 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48858493/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com