首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在体负载之前完成ajax调用

问在体负载之前完成ajax调用
EN

Stack Overflow用户
提问于 2018-02-19 01:33:16
回答 2查看 1K关注 0票数 0

我在w3schools中看到有几种方法可以执行外部脚本:

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

因此,如果我理解正确,因为我在html文件的head部分中有以下脚本,而没有使用异步或延迟,那么应该首先执行它,然后浏览器将继续解析。

代码语言:javascript
复制
<script type="text/javascript" src="js/display.js"></script>

display.js

代码语言:javascript
复制
$.ajax({
    url:"fetch_items.php"
});

fetch_items.php从数据库中获取一些项,并将它们放入数组$_SESSION("my_array")中。

因此,在html文件夹的正文部分,我使用驻留在$_SESSION("my_array")中的值来显示一些内容。

代码语言:javascript
复制
<?php 
if(isset($_SESSION["my_array"]))
{
?>
 <!-- html code echoing values from session -->
<?php
}
?>

但是$_SESSION["my_array"]还没有设置,所以内容不会出现。(如果我重新加载页面,内容将正确显示)

为什么会发生这种情况?如何确保脚本在体加载之前完成了它的执行?下面仅引用脚本:如果不存在异步或延迟:在浏览器继续解析页面之前立即获取和执行脚本。

EN

回答 2

Stack Overflow用户

发布于 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/

票数 1
EN

Stack Overflow用户

发布于 2018-02-19 02:16:03

尝试将async : false放在ajax调用参数中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48858493

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档