gpt4 book ai didi

ajax - Ajax 调用期间会发生什么?

转载 作者:行者123 更新时间:2023-12-01 00:57:19 25 4
gpt4 key购买 nike

你们能告诉我ajax中浏览器背后发生了什么吗?我只知道无需刷新页面即可加载所有数据......

这是我的代码

<script>
function loadXMLDoc()
{
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","ajax_info.txt",true);
xmlhttp.send();
}
</script>

最佳答案

当您发出 AJAX 请求时,您的浏览器会向给定地址发送 HTTP 请求。请求另一端的服务器做出响应,并将数据返回到您的浏览器。这与您导航到新网页时发生的情况相同。

AJAX 的不同之处在于,它不是导航到新页面并直接显示它,而是获取响应数据并将其封装在 JavaScript 变量中。然后可以使用 JavaScript 操作该变量并将其动态插入到您的页面中。

就是这样!唯一对您来说可能仍然有点神秘的是这一行:

xmlhttp.onreadystatechange=function()

它的作用是将一个事件附加到实际执行请求的 xmlhttp 对象。每当对象的“就绪状态”发生变化时,该事件就会触发。 “就绪状态”是请求状态的一种状态指示器。 AJAX请求一般会经历五个阶段:

  • 未发送(0)
  • 已打开 (1)
  • HEADERS_RECEIVED (2)
  • 正在加载(3)
  • 完成(4)

在请求到达“完成”阶段之前,您的数据不可用。通过检查就绪状态代码 4,您可以有效地检查请求是否已完成。请注意,在某些浏览器中,您还可以使用上面定义的常量来检查状态,但由于这些常量并未在所有浏览器中通用定义(Opera 是一个值得注意的异常(exception)),因此最好还是坚持检查数字代码。

还值得一提的是,并非所有就绪状态都可以从所有浏览器访问。代码 4 几乎是一个安全的选择,但一些早期的代码并不总是能够实现。本文更深入地讨论了这个主题:http://www.ibm.com/developerworks/web/library/wa-ajaxintro3/ .

与就绪状态代码一起检查的另一件事是 HTTP 状态代码。您检查它是否等于 200,因为代码 200 意味着请求正常执行。当请求未成功完成时,其他代码将返回给您。 HTTP 代码列表可以在此处找到 http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html .

关于ajax - Ajax 调用期间会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13541810/

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