Ajax基础
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ajax基础相关的知识,希望对你有一定的参考价值。
Ajax基础
Ajax的原理简单来说通过XmlHttpRequest对象来向服务器发异步请求,从服务器获得数据,然后用javascript来操作DOM而更新页面。这其中最关键的一步就是从服务器获得请求数据。原生创建ajax可分为以下四步
1.创建XMLHttpRequest对象
现代浏览器中创建一个XMLHttpRequest对象
var xhr = new XMLHttpRequest();
2.准备请求
初始化上一步创建好的对象,这里可以接受三个参数,如下
xhr.open(method,url,async);
第一个参数表示请求类型,GET或者POST。
第二个参数表示目标ur
第三个参数true代表异步模式请求;false代表同步模式,不建议使用;
异步模式下如果网络阻塞或响应不及时等,均会阻塞在这里等待 出现页面挂起的情况
//GET请求
xhr.open("GET",demo.php?name=tsrot&age=24,true);
//POST请求
xhr.open("POST",demo.php,true);
3.发送请求
一般情况下,使用Ajax提交的参数多是些简单的字符串,可以直接使用GET方法将要提交的参数写到open方法的url参数中,此时send方法的参数为null或为空。
GET请求
xhr.open("GET",demo.php?name=tsrot&age=24,true);
xhr.send(null);
POST请求
xhr.open("POST",demo.php,true);
xhr.setRequestHeder("Content-Type","application/x-www-form-urlencoded;charset=UTF-8");
xhr.send()
4.处理请求
xhr.onreadystatechange = function(){
if(xhr.readyState == 4 && xhr.status == 200){
console.log(xhr.responseText);
}
}
onreadystatechange?:当处理过程发生变化的时候执行下面的函数
readyState?:ajax处理过程0:请求未初始化(还没有调用?open())。
1:请求已经建立,但是还没有发送(还没有调用?send())。
2:请求已发送,正在处理中(通常现在可以从响应中获取内容头)。
3:请求在处理中;通常响应中已有部分数据可用了,但是服务器还没有完成响应的生成。
4:响应已完成;您可以获取并使用服务器的响应了。responseText:获得字符串形式的响应数据responseXML:获得?XML形式的响应数据返回值一般为json字符串,可以用JSON.parse(xhr.responseText)转化为JSON对象
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);
}
}
}
以上是关于Ajax基础的主要内容,如果未能解决你的问题,请参考以下文章