Ajax基础 -2

作者 : 开心源码 本文共3152个字,预计阅读时间需要8分钟 发布时间: 2022-05-13 共186人阅读

上一篇理解了Ajax是什么,以及为什么使用Ajax,不知道小伙伴还记忘记?忘记的可以去瞄一眼,嘿嘿 ~ 那么接下来详情Ajax的使用。

在Ajax讲解之前呢,我们得先详情一个对象,即XMLHttpRequest对象。

Ⅰ、那么什么是XMLHttpRequest呢?

即XMLHttpRequest是一种支持异步请求的技术,它是Ajax的核心。那么为什么它是Ajax核心呢?那就来絮叨一下它的作用了。

Ⅱ、XMLHttpRequest的作用:

⑴在与服务器通讯的过程中,能向服务器提出请求并解决响应,从而不阻塞客户;

⑵可以在页面加载完成后进行页面的局部升级,表现在Ajax技术上,而这个技术是通过XMLHttpRequest对象来实现的。

So,它就是Ajax的核心。

Ⅲ、如何使用Ajax?

⑴ 创立XMLHttpRequest对象,即创立一个异步调用对象;

⑵ 创立一个新的HTTP请求,并指定该HTTP请求的方法URL

⑶ 设置响应HTTP请求状态变化的函数

⑷ 发送HTTP请求;

⑸ 获取异步调用返回的数据;

⑹ 使用JS 和 DOM 实现局部刷新。

那么知道了这几个步骤怎样来实现呢?稍等片刻,我们先来说一下步骤中我标注的加粗字体。


HTTP是一种无状态的协议,也就是不建立持久的连接。

一个HTTP请求一般由四部分组成:

a. HTTP请求的方法(get? |? ?post),get通常用来获取信息,post 用于新建、修改、删除信息,相对安全些;

b. 正在请求的URL地址;

c. 请求头,它包含少量身份验证信息,用户端环境信息等;

d. 请求体,即正文。它包含了客户提交的表单信息、查询的信息等。


而一个完整的HTTP请求过程大致分为以下几个步骤:

a. 建立TCP连接;

b. web浏览器向web服务器发送请求命令;? ?

c.?web浏览器发送请求头信息;? ?

d.?web服务器应答; ??

e.?web服务器发送应答头信息;? ? ?

f.?web服务器向浏览器发送数据; ??

g.?web服务器关闭TCP连接。??


HTTP状态码是由3个数字组成的,其中首位数字定义了状态码的类型,常见的有以下几种:

1xx 表示收到了web浏览器的请求,正在进一步解决。

2xx 客户请求被接收完成。eg:200 →OK

3xx 请求未成功。

4xx 表示用户端提交的请求有误。? ?eg: 400?→ Not Found?

5xx? 表示服务器不能完成对请求的解决? ? eg: 500


压轴菜来啦 ~

我们不能像之前一样,用浏览器直接打开一个页面即可以运行了,是不行的。所以我们需要一个服务器来支持,我安装的是wampserver,在这里我放一下下载地址:http://www.wampserver.com/en/#wampwerver-64-bits-php-5-6-25-php-7

将下载好的压缩包解压,双击应用程序进行安装,进入安装页面后,直接傻瓜式安装,ok,下一步,是等等…..如若没有出现问题,当图标是绿色的时候代表安装成功,而后再浏览器中进行测试。

在我们运行一个页面时,仍然不能单击鼠标右键去运行的,需要把浏览器打开,而后输入要访问的主目录下的页面。接下来进行Ajax异步调用第一步,实例化对象,为了能兼容各大浏览器,我们创立t对象过程中做一个封装通用的XMLHttpRequest对象

function createXHR(){

// 先判断浏览器能否将XMLHttpRequest作为本地对象实现的

if(typeof XMLHttpRequest != “undefined”){

????????return new XMLHttpRequest();

}else if (typeof ActiveXObject() != “undefined”){

????????// 将所有可能出现的ActiveXObject版本放在一个数组内

????????var xhrArr = [‘Microsoft.XMLHTTP’,’MSXML2.XMLHTTP.6.0′,’MSXML2.XMLHTTP.5.0′,’MSXML2.XMLHTTP.4.0′,’MSXML2.XMLHTTP.3.0′,’MSXML2.XMLHTTP.2.0′];

????????// 遍历创立XMLHttpRequest对象

????????var len = xhrArr.length;

????????for(var i = 0;i < len;i++;){

????????????????try{

????????????????????// 创立对象

????????????????????var xhr = new ActiveXObject(xhrArr[i]);

????????????????????break;

????????????????}catch(ex){

????????????????}

????????}

????return xhr;

????}else{

????throw new Error(‘不支持xhr对象’);

????}

}

第一步 over

第二步:创立HTTP请求,语法:open(method,url,async)

参数解释:① method请求类型,GET或者POST,可选参数,GET是默认的请求方式? ?② url 请求的文件地址 ,该文件可以是任何类型的文件,必须参数 ③ async true异步(默认)? 或者 false(同步)?,可选参数

// XMLHttpRequest对象

var xhr = createXHR();

// 创立请求

xhr.open(‘get’,’./server/slider.json’,true);

第二步over

第三步:设置响应XMLHttpRequest对象状态变化的函数

// 响应XMLHttpRequest对象状态变化的函数,onreadystatechange在readystatechange属性发生改变时触发

xhr.onreadystatechange = function(){

????????// 异步调用成功,响应完成

????????if(xhr.readyState === 4){

????????????????if((xhr.status >= 200 && xhr.status <= 300) || xhr.status === 304){

????????????????????????// 第四步:获取服务器返回的数据

? ? ? ? ? ? ? ? ? ? }

????????}

}

第三步over


响应能否成功是通过onreadystatechange这个监听事件来得知的:

0 代表 请求未初始化,open未调用

1 代表服务器连接并建立,open已调用

2 代表请求已接收

3 代表请求解决中

4 代表请求已完成,即响应成功


第四步:发送请求? ? ? ? 语法:send(string)? ?

参数解释:string仅仅用于post请求,不需要时就发送null

在用POST请求的时候就要增加HTTP头,假如需要像HTML表单那样POST数据,就要用setRequsetHeader()来增加HTTP头,而后send()方法中规定发送的数据

语法:xmlhttp.setRequsetHeader(header,value)

使用:xmlhttp.setRequsetHeader(“Content-type”,”application/x-www-form-urlencoded”);

并且设置http头信息必需写在open 和send中间,否则需要抛出异常

xhr.send(null);

第四步over

第五步:获取返回的数据

console.log(xhr.responseText);? // 就能查看我们从服务器中响应的数据

第五步over

前五步涉及的点比较多,最重要的是我手写也累了…嘿嘿 ~~

今天我饶过我自己啦,第六步等明天更 ~~?

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » Ajax基础 -2

发表回复