面试那些事

关于前端ajax那些事

2022-08-11  本文已影响0人  _静夜听雨_

前言

2005 年 2 月,AJAX 这个词第一次正式提出,AJAX 指异步 JavaScript 及 XML (Asynchronous JavaScript And XML),它是 Asynchronous JavaScript and XML 的缩写,指的是通过 JavaScript 的 异步通信,从服务器获取 XML 文档从中提取数据, 再更新当前网页的对应部分,而不用刷新整个网页。Ajax 的核心是 JavaScript 对象 XmlHttpRequest。该对象在 Internet Explorer 5 中首次引入,它是一种支持异步请 求的技术。简而言之,XmlHttpRequest 使您可以使用 JavaScript 向服务器提出请求 并处理响应,而不阻塞用户。

同步和异步

同步指的是当一个进程在执行某个请求的时候,如果这个请求需要等待一段时间才能 返回,那么这个进程会一直等待下去,直到消息返回为止再继续向下执行。
异步指的是当一个进程在执行某个请求的时候,如果这个请求需要等待一段时间才能 返回,这个时候进程会继续往下执行,不会阻塞等待消息的返回,当消息返回时系统 再通知进程进行处理。

创建一个 Ajax 的具体步骤

具体来说,创建 AJAX 包括以下 6 个步骤:

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

var xml = new XMLHttpRequest();

xml.open('GET',url,'true');

xml.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
xml.send()

xml.onreadystatechange = function(){
    if(xml.readyState === 4 && xml.status === 200){
        //成功后,处理响应
    }
}

例子中采用了简单的get请求,如果使用post,可以在send中传参,xml.send(data)

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();
5、如果是使用 jQuery,直接这样就可以了$.ajaxSetup({cache:false})。

这样页面的 所有 ajax 都会执行这条语句就是不需要保存缓存记录。

上一篇 下一篇

猜你喜欢

热点阅读