码迷,mamicode.com
首页 > Web开发 > 详细

Ajax基础

时间:2019-02-11 20:08:41      阅读:214      评论:0      收藏:0      [点我收藏+]

标签:异步   lse   情况下   请求   null   text   cat   png   参数   

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基础

标签:异步   lse   情况下   请求   null   text   cat   png   参数   

原文地址:http://blog.51cto.com/13951200/2349261

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!