作者:涂涂2502863547_341 | 来源:互联网 | 2023-09-10 20:19
JavaScript中几个最重要的大知识点面向对象DOM事宜异步交互ajaxAJAXAJAX是异步的javascript和xml(AsynchronousJavascriptAnd
Javascript中几个最重要的大知识点
面向对象
DOM事宜
异步交互ajax
AJAX
AJAX是异步的Javascript和xml(Asynchronous Javascript And XML)的缩写,用于网页部份革新,提拔用户阅读体验
平常前端顺序员关于AJAX的控制仅仅停留在会用AJAX发送要求,将取得的数据衬着到DOM中即可,如果看这篇文章的你是出于这个目标,那末下面的两个代码示例就可以处置惩罚你的问题了。
var xhr=new XMLHttpRequest();
xhr.open("[method]","[url]",[true/false]); //true为异步,false为同步
xhr.Onreadystatechange=function(){
if(xhr.readystate===4 && xhr.status==200){
var result=xhr.responseText; //这里是效劳器端返回的数据
}
}
xhr.send(null); //如果须要向效劳器发送数据,则写入key=value&key=value情势的字符串
$.ajax({
url:"",
method:"",
dataType:"json",
async:true,
data:null, //须要向效劳器发送的数据,可所以对象情势
success:function(data){} //data为效劳器返回的数据
})
本文的重点不在于引见AJAX写法,而是AJAX所形成的前后端交互,下面将引见完全的前后端交互历程以及个中的一些细节东西。
客户端和效劳器端的交互
面试题:当你在阅读器的地点栏中输入一个网址,到阅读器显现这个网页中的内容,中心都阅历了哪些事变?
这个面试题粗略地考核了一下前后端交互的知识点,即客户端和效劳器端的交互模子“HTTP事件”,这个交互重要包含了以下几个阶段:
Request要求阶段
客户端起首经由过程域名,到DNS效劳器上,找到效劳器对应的外网IP地点
经由过程外网IP地点,找到对应的项目效劳器
经由过程端口号,在效劳上找到对应的项目资本文件目次(由于宣布项目标时刻,已把项目目次和项目端口号对应了)
Response相应阶段
效劳器端会把客户端须要要求的资本文件的源代码,返回给客户端的阅读器
客户端阅读器吸收到返回内容后,运用差别的代码剖析引擎举行衬着和剖析
看到这里,你也许会对上面一些名词有迷惑,下面临一些细节举行细致地形貌,以协助你明白以上的交互。
一个完全的URI:https://www.baidu.com:443/xxx…
URI:一致资本标识符
URL:一致资本定位符
URN:一致资本称号
URI=URL+URN
上述的一个完全的URI可以分6部份,前3部份为URL,后3部份为URN
HTTP / HTTPS / FTP:传输协定
阅读器默许运用HTTP,但网站可以举行重定向运用HTTPS
HTTP:超文本传输协定,客户端和效劳器端除了传输文本之外,还可以传输图片,音视频等富媒体资本(二进制文件流/BASE64……)
HTTPS:传输通道经由SSL加密HTTP,和付出有关的网站基础都是HTTPS传输协定
FTP:资本文件传输协定,常常应用于对效劳器资本文件的治理(上传和下载)
域名
一级域名:www.qq.com
二级域名:sport.qq.com
三级域名:kbs.sport.qq.com
端口号
要求资本文件的途径和称号
问号传参
哈希值(HASH)
#video
平经常使用于锚点定位或许完成页面的路由切换
HTTP报文:客户端通报给效劳器端的内容以及效劳器返回给客户端的内容统称为报文
客户端都可以经由过程哪些体式格局把内容通报给效劳器呢?
效劳器端怎样把内容返回给客户端?
实际上关于收集协定的知识点远不止这些,然则用于明白AJAX以及前后端交互已足够了,下面便可以对AJAX举行深切地明白了。
剖析AJAX步骤
1.建立一个对象(在IE6以及更低版本的阅读器中,不支撑XMLHttpRequest这个类,我们须要运用ActiveXObject来处置惩罚)
var xhr=new XMLHttpRequest;
2.翻开一个URL要求地点(发送要求前的一些设置)
要求体式格局:GET系列(GET/DELETE/HEAD);POST系列(POST/PUT)
要求地点:经由过程这个地点向效劳器发送数据要求,要求的地点平常都是背景供应的(API接口文档)
设置同步异步:默许TRUE异步,设置为FALSE为同步
xhr.open("GET","URL",true);
3.监听AJAX状况的转变,完成差别的营业操纵
0:UNSENT 未发送
1:OPENED 已翻开,就是已实行完成第二步操纵了
2:HEADERS_RECEIVED 客户端已吸收到效劳器返回的相应头信息
3:LOADING 效劳器返回的主体内容正在传输中
4:DONE 相应主体内容已被客户端吸收
xhr.Onreadystatechange=function(){
if(xhr.readyState===4 && xhr.status===200){
var result=xhr.responseText;
}
}
xhr.status:HTTP状况码,经由过程状况码可以晓得当前HTTP事件是不是胜利,以及失利的缘由
xhr对象中的一些属性和要领
xhr.response:猎取相应主体内容(平常不必)
xhr.responseText:猎取相应主体内容,而且猎取的内容是文本花样(字符串)
xhr.responseXML:猎取相应主体内容是XML花样(XML文档)
xhr.getResponseHeader([key]):猎取相应头信息
xhr.timeout:设置AJAX要求的超时时候,如果当前要求凌驾这个时候,代表超时,AJAX要求完毕,并且会触发ontimeout事宜
xhr.abort():中缀当前AJAX要求,xhr.onabort就是当要求被中缀时触发的事宜
xhr.setRequestHeader([key],[value]):设置要求头信息,[value]不能是中文汉字,如果须要通报中文汉字,须要先把通报的内容举行编码由效劳器举行解码,比方:xhr.setRequestHeader(“ajax”,encodeURIComponent(“前后端交互”));
编码解码体式格局:
escape / unescape:这类体式格局常常应用于客户端对中文汉字举行编码(不经常使用,由于效劳器端大部份言语,除了NODE,别的都不支撑这个编码体式格局)
encodeURI / decodeURI:根据UNICODE编码解码
encodeURIComponent / decodeURIComponent:相对于上面的要领来讲可以把迥殊字符也举行编码,而encodeURI只能编码中文汉字
4.发送AJAX要求,AJAX要求这件事从实行SEND后才最先(之前都是在做预备),当readState===4的时刻这件事完毕;
SEND要领中写的内容就是客户端经由过程要求主体通报给效劳器的内容,不想经由过程要求主体通报内容写null
xhr.send(null);
至此,全部AJAX要求完成,预计你对前后端交互也有一个大抵的了解了。