0%

XMLHttpRequest

Level 1 XMLHttpRequest

Ajax 和 XMLHttpRequest

Ajax XMLHttpRequest,细究起来它们两个是属于不同维度的 2 个概念

what is ajax?

AJAX stands for Asynchronous JavaScript and XML. AJAX is a new technique for creating better, faster, and more interactive web applications with the help of XML, HTML, CSS, and Java Script.
AJAX is based on the following open standards:

  • Browser-based presentation using HTML and Cascading Style Sheets (CSS).
  • Data is stored in XML format and fetched from the server.
  • Behind-the-scenes data fetches using XMLHttpRequest objects in the browser.
  • JavaScript to make everything happen.

ajax 是一种技术方案,但并不是一种新技术。它依赖的是现有的 CSS/HTML/Javascript,而其中最核心的依赖是浏览器提供的 XMLHttpRequest 对象,是这个对象使得浏览器可以发出 HTTP 请求接收 HTTP 响应

用一句话来总结两者的关系:使用 XMLHttpRequest 对象来发送一个 Ajax 请求

创建 XMLHttpRequest 对象

所有现代浏览器 (IE7+、Firefox、Chrome、Safari 以及 Opera) 都内建了 XMLHttpRequest 对象。

老版本的 Internet Explorer (IE5 和 IE6)使用 ActiveX 对象:

var xmlhttp;

if (window.XMLHttpRequest)
    // code for all new browsers
    xmlhttp = new XMLHttpRequest();
else
    // code for IE5 and IE6
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");

指定回调函数

xmlhttp.onreadystatechange = flushlist;

向主机发送请求

xmlhttp.open("GET", "/programmes", true);
xmlhttp.send();

等待主机应答

监控 XMLHttpRequest 对象的状态变化

function flushlist() {
  if ( this.readyState == 4 && this.status == 200 ) {
    alert( this.responseText );
  } else {
    alert( this.statusText );
  }
};
  • xhr.readyState:XMLHttpRequest 对象的状态,等于 4 表示数据已经接收完毕。
  • xhr.status:服务器返回的状态码,等于 200 表示一切正常。
  • xhr.responseText:服务器返回的文本数据
  • xhr.responseXML:服务器返回的 XML 格式的数据
  • xhr.statusText:服务器返回的状态文本。

Ref

  1. 你真的会使用 XMLHttpRequest 吗?
  2. XMLHttpRequest Level 2 使用指南