你真的了解Ajax吗?
Posted 程序猿热点
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了你真的了解Ajax吗?相关的知识,希望对你有一定的参考价值。
点击上方蓝色字体,欢迎关注微信公众号。
人人都说自己会 AJAX,那么你能说清楚什么是 AJAX 吗?
----------------
简单一句话,AJAX 就是用 JS 向服务端发起一个请求,并获取服务器返回的内容。
就这么简单?是的。
下面完整的介绍。
AJAX 之前的时代
在 AJAX 被发明之前,浏览器是怎么发起请求的?
a 标签。用户点击页面中的 a 链接,也会发起一个请求。(同时页面刷新)
img 标签。页面中如果有 img 标签,那么就会发起一个对此图片的请求(页面没有刷新,但是只能请求图片)类似的还有 link 标签、script 标签,都可以对一类文件的请求。
为什么我们需要 AJAX?
上面列举的请求发起方式,要么会导致页面刷新,要么只能请求特定类型的文件(图片、CSS 或 JS)。
Gmail 这类复杂的网页应用非常需要一个「可以请求任意类型的数据,并获取数据内容」的方案。
当时微软极具创新意识地提供了一个私有接口 ActiveXObject("Microsoft.XMLHTTP"),并在 IE 5.0 中开放给开发者用。
Gmail 的开发者发现这个接口之后如获至宝,并借此完成了第一个著名的 AJAX 应用——Gmail,用户可以在一个页面里完成收发邮件、设置过滤规则等复杂的功能。
从此,AJAX 成了前端开发者必会的技能。
大白话解释什么是Ajax:
大学毕业拍毕业照,全班30人,一共去了29人。可是拍完之后,没参与照相的同学也想出现在照片中,该怎么办呢?
传统方式:大家再召集一次,重新拍一张。
Ajax:把这名同学PS进去
这就是Ajax的特点:
可以在不重新召集所有同学拍照的情况下,对照片的部分进行更新。
可以在不重新加载整个网页的情况下,对网页的某部分进行更新。
(重新拍照理解为重新加载网页)
Ajax的使用
以下步骤,如果不能理解你死记硬背都要记下来,总比你答不出来要好吧!
1.创建Ajax核心对象XMLHttpRequest
[javascript]view plaincopy
var xmlhttp;
if (window.XMLHttpRequest)
{// 兼容 IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// 兼容 IE6, IE5
xmlhttp=newActiveXObject("Microsoft.XMLHTTP");
}
2.向服务器发送请求
[javascript]view plaincopy
xmlhttp.open(method,url,async);
send(string)
注意:open 的参数要牢记,很多面试官爱问这样的细节
method:请求的类型;GET 或 POST
url:文件在服务器上的位置
async:true(异步)或 false(同步)
send(string)方法post请求时才使用字符串参数,否则不用带参数。
注意:post请求一定要设置请求头的格式内容
[javascript]view plaincopy
xmlhttp.open("POST","ajax_test.html",true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send("fname=Henry&lname=Ford");
3.服务器响应处理
responseText 获得字符串形式的响应数据。responseXML 获得XML 形式的响应数据。
3.1 同步处理
[javascript]view plaincopy
xmlhttp.open("GET","ajax_info.txt",false);
xmlhttp.send();
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
直接在send()后面处理返回来的数据。
3.2 异步处理
异步处理相对比较麻烦,要在请求状态改变事件中处理。
[javascript]view plain copy
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 &&xmlhttp.status==200)
{
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
}
}
一共有5中请求状态,从0 到 4 发生变化。
0: 请求未初始化
1: 服务器连接已建立
2: 请求已接收
3: 请求处理中
4: 请求已完成,且响应已就绪
xmlhttp.status:响应状态码。这个也是面试比较爱问的,这个必须知道4个以上,比较常见的有:
200: "OK"
403 (禁止) 服务器拒绝请求。
404 (未找到) 服务器找不到请求的网页。
408 (请求超时) 服务器等候请求时发生超时。
500 (服务器内部错误) 服务器遇到错误,无法完成请求。
如果大家喜欢这篇文章请分享或点赞,您的支持就是我创作的动力!
其实学好技术并不难,架构师免费分享全网全套最新web前端、JavaScript、HTML5、php、数据库。。。等视频资料!
以上是关于你真的了解Ajax吗?的主要内容,如果未能解决你的问题,请参考以下文章