美文网首页JavaScript
AJAX使用步骤总结

AJAX使用步骤总结

作者: 西瓜鱼仔 | 来源:发表于2019-10-21 10:52 被阅读0次

AJAX是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。也就是我们常听到的“异步加载”。

它的基本工作流程如下:



使用起来也非常简单:

<head>
<script>
function loadXMLDoc()
{
    .... AJAX 脚本执行 ...
}
</script>
</head>
<div id="myDiv"><h2>使用 AJAX 修改该文本内容</h2></div>
<button type="button" onclick="loadXMLDoc()">修改内容</button>

这样就能实现网页某部分的异步数据加载,重点在于“ AJAX 脚本执行”部分,下面详细说明一下创建一个Ajax 脚本的具体步骤。


创建一个AJAX 脚本分为4个步骤:

1. 创建XMLHttpRequest对象

不同的浏览器使用的异步调用对象有所不同。

  • 所有现代浏览器(IE7+、Firefox、Chrome、Safari 以及 Opera)均内建 XMLHttpRequest 对象:
var xmlHttp = new XMLHttpRequest();
  • 老版本的 Internet Explorer (IE5 和 IE6)使用 ActiveX 对象:
var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");

为了应对所有的现代浏览器,包括 IE5 和 IE6,请检查浏览器是否支持 XMLHttpRequest 对象。如果支持,则创建 XMLHttpRequest 对象。如果不支持,则创建 ActiveXObject :

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");
  }

2. 向服务器发送请求

使用 XMLHttpRequest 对象的 open() 和 send() 方法,将请求发送到服务器

xmlHttp.open("GET","test1.txt",true);
xmlHttp.send();

3. 获取服务器响应

使用 XMLHttpRequest 对象的 responseText 或 responseXML 属性来获取来自服务器的响应。

  • responseText:获取字符串形式的响应数据。
  • responseXML:获取 XML 形式的响应数据。

示例1:如果来自服务器的响应并非 XML,使用 responseText 属性。

document.getElementById("myDiv").innerHTML=xmlhttp.responseText;

示例2:如果来自服务器的响应是 XML,使用 responseXML 属性,并对XML 对象进行解析。

var xmlDoc=xmlhttp.responseXML;
var txt="";
var x=xmlDoc.getElementsByTagName("ARTIST");
for (var i=0;i<x.length;i++)
  {
  txt=txt + x[i].childNodes[0].nodeValue + "<br />";
  }
document.getElementById("myDiv").innerHTML=txt;

4. 完善AJAX请求

经过上面三步,我们实现了一个完整的AJAX 请求过程。
但是整个过程中还存在瑕疵:我们无法得知服务器响应是否成功。如果响应未成功,那么后面的操作就毫无效果,我们可能还会误以为是自己程序写错了,为了防止这种情况,我们监听一下响应的状态,确保响应成功后才进行后面的操作

XMLHttpRequest 对象的三个重要的属性:

  1. readyState
    从创建XMLHttpRequest对象开始,到发送数据、接收数据、XMLHttpRequest对象一共会经历以下5种状态:
  • 0: 请求未初始化
  • 1: 服务器连接已建立
  • 2: 请求已接收
  • 3: 请求处理中
  • 4: 请求已完成,且响应已就绪
  1. onreadystatechange 事件
    存储函数(或函数名),每当 readyState 属性改变时,就会调用该函数。

  2. status

  • 200: "OK"
  • 404: 未找到页面

在 onreadystatechange 事件中,我们规定当服务器响应已做好被处理的准备时所执行的任务。
readyState 等于 4 且状态为 200 时,表示响应已就绪

xmlHttp.onreadystatechange=function()
  {
  if (xmlHttp.readyState==4 && xmlHttp.status==200)
    {
    document.getElementById("myDiv").innerHTML=xmlHttp.responseText;
    }
  }

(注释:onreadystatechange 事件被触发 5 次(0 - 4),对应着 readyState 的每个变化。)

到现在,我们已经完成了一个完美的AJAX脚本!
完整代码:

  <script>
    // 1.创建XMLHttpRequest对象
    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");
    }
    
   // 2.发送服务器请求
    xmlHttp.open("GET","test1.txt",true);
    xmlHttp.send();

   // 3.判断服务器响应是否成功,如果响应成功,进行相关操作
    xmlHttp.onreadystatechange=function()
    {
      if (xmlHttp.readyState==4 && xmlHttp.status==200)
      {
        document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
      }
    }  
  </script>

扩展:AJAX CORS 跨域请求

由于所有浏览器都存在“同源策略”,因此跨域请求正常情况下不被允许。

随着技术的发展,现在的浏览器可以主动支持设置从而允许跨域请求,即:跨域资源共享(CORS,Cross-Origin Resource Sharing),其本质是设置响应头,使得浏览器允许跨域请求。

整个CORS通信过程,都是浏览器自动完成,不需要用户参与。对于开发者来说,CORS通信与同源的AJAX通信没有差别,代码完全一样。浏览器一旦发现AJAX请求跨源,就会自动添加一些附加的头信息,有时还会多出一次附加的请求,但用户不会有感觉。

实现CORS通信的关键是服务器。只要服务器实现了CORS接口,就可以跨源通信。
前端的代码不用修改,服务端的代码需要修改。

相关文章

  • AJAX使用步骤总结

    AJAX是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。也就是我们常听到的“异步加载”。 它的基本工...

  • SpringMVC第三天下午

    1、SpringMVC使用Ajax 步骤一:在selectUser.jsp添加超链接 步骤二:引入jquery...

  • 三、原生JS发送Ajax请求

    一、Ajax实现步骤 使用Ajax技术实现异步交互: 创建XMLHttpRequest对象(根据浏览器的不同创建方...

  • ajax小结

    在开发过程中ajax是必须的,对近期在ajax的使用上的心得进行总结。 一、关于ajax AJAX = Async...

  • js的基础--ajax

    什么是Ajax 不刷新页面的情况下从服务器获取、提交数据的一种数据交互方式。 Ajax使用步骤 1\创建Ajax对...

  • 原生js学习笔记8——Ajax基础

    什么是Ajax 不刷新页面的情况下从服务器获取、提交数据的一种数据交互方式。 Ajax使用步骤 1\创建Ajax对...

  • <Ajax>总结:知识点

    一、Ajax的基础: 1、使用步骤 1.1、步骤: 创建一个异步对象 设置请求方式和请求地址 发送请求 监听状态的...

  • React Native 学习总结(四)

    本章主要总结网络的使用。 1.使用Fetch 2.使用async/await 3.使用ajax 4.websocket

  • jquery ajax使用总结

    JQuery AJAX GET,POST >GET - 从指定的资源请求数据【基本用于从服务器获得数据】 $.ge...

  • ajax使用流程总结

    ajax使用流程 总体分7步 1.new 一个请求对象var httpRequest=new XmlHttpReq...

网友评论

    本文标题:AJAX使用步骤总结

    本文链接:https://www.haomeiwen.com/subject/xavzmctx.html