Ajax的认识

2005年2月,Ajax这个词被第一次正式提出,它是 Asynchronous JavaScript and XML的缩写,指的是通过JavaScript的异步通信,从服务器获取XML文档,并从中提取数据,再更新当前网页的对应部分,而不用刷新整个网页。
具体的来说,Ajax分为以下几个步骤:

  • 创建XMLHttpRequest对象,也就是创建一个异步调用对象。
  • 创建一个新的HTTP请求,并指定该HTTP请求的方法,URL以及验证信息。
  • 设置响应HTTP请求状态变化的函数。
  • 发送HTTP请求。
  • 获取异步调用返回的数据。
  • 使用JavaScript和DOM实现局部刷新。

实现步骤:

方法1:

const SERVER_URL = "/server";

//1.创建XMLHttpRequest对象。
let xhr = new XMLHttpRequest();
//2.创建新的HTTP请求,true代表异步
xhr.open("GET",SERVER_URL,true)

//3.设置状态监听函数
xhr.onreadystatechange = function(){
    //通信成功时,状态为4
    if(this.readyState !== 4) return 
    //当请求成功或失败时,改变promise的状态。
    if(this.status === 200){
        handle(this.response);
    }else{
        console.log(this.statusText)
    }
}
//4.设置请求失败时监听函数
xhr.onerror = function(){
    console.log(this.statusText)
}
//5.设置响应的数据类型
xhr.responseType = 'json';
//6.设置请求头信息
xhr.setRequestHeader("Accept","application/json");
//7.发送HTTP请求
xhr.send(null)

方法2:

//用promise封装实现ajax

function getJson(url){
    //1.创建一个promise对象
    let promise = new Promise(function(resolve,reject){
        //2.创建一个异步调用对象
        let xhr = new XMLHttpRequest();
        //3.创建一个HTTP请求
        xhr.open("GET",url,true);
        //4.设置状态监听函数
        xhr.onreadystatechange = function(){
            if(this.readyState !== 4) return 
            //5.当请求成功或者失败时,改变promise的状态
            if(this.status === 200){
                resolve(this.response);
            }else{
                reject(new Error(this.statusText));
            }
        };
        //6.设置错误监听函数
        xhr.onerror = function(){
            reject(new Error(this.statusText));
        }
        //7.设置响应的数据类型
        xhr.responseType = 'json';
        //8.设置请求头信息
        xhr.setRequestHeader("Accept","application/json");
        //9.发送HTT请求
        xhr.send(null);
    })
    return promise;
}

我的理解:

Ajax是一种异步通信的方法,通过直接由js脚本向服务器发起HTTP通信,然后服务器根据返回的数据,更新网页的相应部分,而不用刷新整个页面的一种方法。
创建一个ajax有这样几个步骤:
首先是创建一个XMLHttpRequest对象。
然后在这个对象上使用open方法创建一个HTTP请求,open方法所需要的参数是请求的方式,请求的地址,是否异步,和用户的认证信息。
在发起请求前,我们可以为这个对象添加一些信息和监听函数,比如说我们可以通过setRequestHeader方法来为请求添加头部信息。我们还可以为这个对象添加一个状态监听函数。一个XMLHttpRequest对象一共有五个状态,当它的状态变化时会触发onreadystatechange事件。我们可以通过设置监听函数,来处理请求成功后的结果。当对象的readyState变为4的时候,代表服务器返回的数据接收完成,这个时候我们可以通过判断请求的状态,如果状态是2XX或者是304的化则代表返回正常。这个时候我们就可以通过response中的数据来对页面进行更新了。
当对象的属性和监听函数都设置完成后,最后我们调用sent方法来向服务器发起请求,可以传入参数作为发送的数据体。

Ajax解决浏览器缓存问题

  1. 在Ajax发送请求之前加上anyAjaxObj.setRequestHeader(“If-Modified-Since”,“0”)
  2. 在Ajax发送请求之前加上anyAjaxObj.setRequestHeader(“Cache-Control”,“no-cache”)
  3. 在URL后面加上一个随机数:“fresh=”+Math.random();
  4. 在URL后面加上时间戳:“nowtime=”+new Date().getTime();
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值