继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

【九月打卡】第二天 ajax的学习笔记

闪电打雷躲树下
关注TA
已关注
手记 6
粉丝 3
获赞 1

课程名称:ajax&fetch   讲师:Alex 课程链接:https://class.imooc.com/lesson/2137#mid=50794

一、什么是Ajax

AJAX(Asynchronous Javascript And XML)翻译成中文就是“异步Javascript和XML”。即使用Javascript语言与服务器进行异步交互,传输的数据为XML(当然,传输的数据不只是XML)。

AJAX还有一个最大的特点就是,当服务器响应时,不用刷新整个浏览器页面,而是可以局部刷新。这一特点给用户的感受是在不知不觉中完成请求和响应过程。


传输的数据可以是text纯文本,但是更常用的是xml,现在我们最经常使用就是json。


二、同步交互和异步交互

同步交互:客户端发出一个请求后,需要等待服务器响应结束后,才能发出第二个请求;

异步交互:客户端发出一个请求后,无需等待服务器响应结束,就可以发出第二个请求。

三、Ajax的应用场景

搜索引擎的关键字提示,使用的就是ajax技术,在我们输入一些文字之后,它就会把相近的词汇提示出来供我们选择使用。这个过程整个页面没有刷新,只是刷新页面中的局部位置。而且请求发出以后,浏览器还可以进行其他的操作,无需等待服务器的响应。



还有一些网站的判定用户名已经存在的提示,也是使用的ajax技术。当输入用户名后,把光标移动到其他表单项上时,浏览器会使用AJAX技术向服务器发出请求,服务器会查询名为zhangSan的用户是否存在,最终服务器返回true表示名为zhangSan的用户已经存在了,浏览器在得到结果后显示“用户名已被注册!”。整个过程中页面没有刷新,只是局部刷新了;在请求发出后,浏览器不用等待服务器响应结果就可以进行其他操作。

五、Ajax的四步操作

第一步 创建XMLHttpRequest对象

ajax其实只需要学习一个对象:XMLHttpRequest,如果掌握了它,就掌握了ajax。


如何得到这个对象呢?

大多数浏览器,可以通过:var xmlHttp = new XMLHttpRequest();

第二步 打开与服务器的连接

我们使用xmlHttp.open():用来打开与服务器的连接,它需要三个参数:

请求方式:可以是GET或者POST;

请求的URL:指定服务器端资源,例如/xxx/AServlet;

请求是否为异步:如果为true表示发送异步请求,否则为同步请求。

例如:


xmlHttp.open("GET", "/day23_1/AServlet", true);

第三步,发送请求

这一步很简单,就是执行发送函数。

xmlHttp.send(null);

但是注意这里要给一个参数null,如果不给参数可能会造成部分浏览器无法发送。
参数其实就是请求体内容。如果是GET请求,必须给出null。如果是POST,这里我们先不做讨论。


第四步 处理请求 得到响应

这一步我们需要一些知识点作为前导:


在xmlHttp对象的一个事件上注册一个监听器:onreadystatechange


xmlHttp对象一共有5个状态:

0:表示刚创建,还没有调用open()方法

1:表示请求开始,调用了open()方法,但是没有调用send()方法

2:调用完了send()方法

3:服务器已经开始响应,但是不再表示响应结束了

4:服务器响应结束了。(通常我们只关心这个状态)


怎么得到xmlHttp对象的状态呢?我们可以使用属性var state = xmlHttp.readyState,它的值可能是0 1 2 3 4 。


得到服务器的响应状态码,使用var status = xmlHttp.status;,例如是200 404 500


得到服务器响应的内容

可以使用var content = xmlHttp.responseText;得到的是服务器的响应的文本格式的内容

也可以使用var content = xmlHttp.responseXML,这样得到的是服务器的响应的xml响应的内容,它是一个document对象


这样我们可以形成如下的代码用来处理我们需要响应的内容:


// xmlHttp的5种状态都会调用本方法,但是我们通常只关心4状态

xmlHttp.onreadystatechange = function() {

// 双重判断,判断是否为4状态,并且判断是否为200

if (xmlHttp.readystate == 4 && xmlHttp.status == 200) {

// 获取服务器的响应内容

var text = xmlHttp.responseText;

...

...

}

}


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP