Ajax :异步JavaScript和xml、异步js脚本和Xml经常被用来实现本地页面的异步刷新,这对提升用户体验有很大帮助。Xml在多语言语言中有优势,但Ajax技术实际上是用Json对象代替XML来处理数据。
Ajax历史.学习知识。
Ajax属于Web前端开发技术,与javascript关系密切。Ajax是一种实现异步通信而不刷新的技术,这种技术可以通过多种方式实现。浏览器鼻祖网景最早发明了LiveScript脚本语言,以丰富网页元素的表达形式。使网页呈现动态效果。JavaScript语言是在所有后续的修订和升级之后诞生的。同时,微软也看到了互联网的前景,开始涉足互联网行业,推出了JScript语言。不幸的是,它不像JavaScript那样成熟,发展缓慢。最终,微软在互联网上的决心促成了微软对NS漫长而曲折的收购过程.
这里,动态超文本标记语言将javascript放在Dom树的元素节点中,为元素提供动态显示行为。
Ajax代码创意。
创建请求对象。
配置请求对象并将其发送到服务器。
服务器应答请求对象。
(1)创建一个请求对象作为与服务器通信的对象:
函数create request(){ try { var request=new XMlhttprequest();} catch(tryMS){ try { request=new ActiveX object(' Msxml 2。XMLHTTP’);} catch(others ms){ try { request=new ActiveX object(' Microsoft。XMLHTTP’);}catch(失败){ request=null} } }返回请求;}注意:ActiveXObject是一个Microsoft特有的编程对象,不同的浏览器支持两个不同的版本。XMLHTTP是一组API,可以通过Javascript和其他脚本语言中的HTTP协议发送或接收XML和其他数据。
获取请求对象请求后,它具有以下属性:
常用的有onreadystatechange、readystate、responsetext和status。
(2)配置请求对象并将其发送到服务器:
var request=create request();request.open('GET ',url,true);request . onreadystatechange=showResponse;request . send(null);打开、发送发送方法来自请求对象的原型XMLHttpRequest。打开__proto__:XMLHttpRequest查看:
open()方法有三个参数,第一个是用于发送请求的方法(GET或POST,区别将在后面总结),第二个是指定服务器端脚本的url(文件可以是任何类型的文件),第三个参数指定是否执行异步处理(默认为真异步)。
send()方法将请求发送到服务器。
我在这里注意到request . onreadystatechange=showresponse;当代码位于不同的位置时,控制台输出的响应内容是不同的。假设回调函数在加入任务队列时必须有不同的输出。例如,在这个位置,
request . onreadystatechange=showResponse;打开后发送前,当代码解析为request时,onreadystatechange=show response;此时,readyStates=1(请求已与服务器建立连接),然后当readyStates从1变为2时,回调函数showResponse加入等待执行的任务队列,readyState从2变为3,回调函数showResponse第二次加入任务队列,readyState从3变为4,回调函数再次加入队列。因此,我猜在执行主代码时,控制台会输出“请求已发送、服务器已接收、发送后”、“请求正在处理”和“请求已完成”。没错。
(3)当服务器应答请求对象时,js可以处理响应内容:
显示响应(){if (request。ready state==0){控制台。日志(“在调用open之前,请求未初始化”);} else if(请求。readystate==1) {console.log('请求已发出,服务器连接已建立,打开后发送前');} else if(请求。readystate==2) {console.log('发送请求,接收服务器,发送后');} else if(请求。readystate==3) {console.log('正在处理请求');} else if(请求。readystate==4) {console.log('请求已完成');if(request . status==200){//process request . responsetext;}}}以上代码只是为了跟踪readyState的变化,实际的项目代码并没有那么多。下面是实际的主代码:
函数response () {if (request。readystate==4) {if(请求。status==200){//处理请求. request.responseText} } } ps:Ajax解决了什么问题?
众所周知,当客户端向服务器请求页面时,服务器首先动态计算并生成页面,然后将其发送给客户端。客户端浏览器按顺序编译和显示页面。
在没有Ajax的情况下,如果页面有用户认证控件,当客户端浏览器呈现用户认证控件时,会等待服务器的认证结果,然后页面元素收到结果后可以继续呈现。在此身份验证过程中,通常会执行读取数据库等操作,这称为同步模式。但是,这种模式会导致网页呈现假死状态。
使用Ajax后,也是一个验证控件。在客户端提交验证请求后,它将继续按顺序呈现其他元素。获得验证结果后,javascript修改内存中的DOM对象并呈现给用户(注意:只修改内存中的DOM对象,客户端接收到的页面文件不做修改)。这样,使用异步模式,就不会有假死,客户端也节省了等待服务器返回结果时的时间开销。