初学者必看的Ajax总结篇

2019-09-14 06:51:55刘景俊

onreadystatechange :当处理过程发生变化的时候执行下面的函数

readyState :ajax处理过程

      0:请求未初始化(还没有调用 open() )。

      1:请求已经建立,但是还没有发送(还没有调用 send() )。

      2:请求已发送,正在处理中(通常现在可以从响应中获取内容头)。

      3:请求在处理中;通常响应中已有部分数据可用了,但是服务器还没有完成响应的生成。

      4:响应已完成;您可以获取并使用服务器的响应了。

status属性:

200:”OK”
404: 未找到页面

responseText:获得字符串形式的响应数据

responseXML:获得 XML形式的响应数据

对象转换为JSON格式使用JSON.stringify

json转换为对象格式用JSON.parse()

返回值一般为json字符串,可以用JSON.parse(xhr.responseText)转化为JSON对象

从服务器传回的数据是json格式,这里做一个例子说明,如何利用

1、首先需要从XMLHttpRequest对象取回数据这是一个JSON串,把它转换为真正的JavaScript对象。使用JSON.parse(xhr.responseText)转化为JSON对象

2、遍历得到的数组,向DOM中添加新元素

function example(responseText){
var saleDiv= document.getElementById("sales");
var sales = JSON.parse(responseText);
 for(var i=0;i<sales.length;i++){
 var sale = sales[i];
 var div = document.createElement("div");
 div.setAttribute("class","salseItem");
 div.innerHTML = sale.name + sale.sales;
 salseDiv.appendChild(div);
 }
}

5、完整例子

var xhr = false;
 if(XMLHttpRequest){
 xhr = new XMLHttpRequest();
 }else{
 xhr = new ActiveXObject("Microsoft.XMLHTTP");
};
if(xhr) {//如果xhr创建失败,还是原来的false
 xhr.open("GET","./data.json",true);
 xhr.send();
 xhr.onreadystatechange = function(){
 if(xhr.readyState == 4 && xhr.status == 200){
 console.log(JSON.parse(xhr.responseText).name);
 }
 }
}

data.json

{
 "name":"tsrot",
 "age":24
}

这个过程是一定要记在脑子里的

function ajax(url, success, fail){
 // 1. 创建连接
 var xhr = null;
 xhr = new XMLHttpRequest()
 // 2. 连接服务器
 xhr.open('get', url, true)
 // 3. 发送请求
 xhr.send(null);
 // 4. 接受请求
 xhr.onreadystatechange = function(){
 if(xhr.readyState == 4){
 if(xhr.status == 200){
 success(xhr.responseText);
 } else { // fail
 fail && fail(xhr.status);
 }
 }
 }
}

XMLHttpRequest 在异步请求远程数据时的工作流程