首先,咱们来回顾下ajax是什么?
Ajax = 异步 JavaScript 和XML。
Ajax是一种用于创立疾速动静网页的技术。
通过在后盾与服务器进行大量数据交换,Ajax能够使网页实现异步更新。这意味着能够在不从新加载整个网页的状况下,对网页的某局部进行更新。
传统的网页(不应用 Ajax)如果须要更新内容,必须重载整个网页面
后面谈到ajax是什么,其次要也就是异步提交,大家是否晓得同步和异步提交的区别吗?
- 同步提交:当用户发送申请时,以后页面不能够应用,服务器响应页面到客户端,响应实现,用户才能够应用页面。
- 异步提交:当用户发送申请时,以后页面还能够持续应用,当异步申请的数据响应给页面,页面把数据显示进去 。
Ajax工作原理
客户端发送申请,申请交给xhr,xhr把申请提交给服务,服务器进行业务解决,服务器响应数据交给xhr对象,xhr对象接收数据,由javascript把数据写到页面上,如下图所示:
Ajax申请的五个步骤:
//第一步,创立XMLHttpRequest对象var xmlHttp = new XMLHttpRequest();function CommentAll() {//第二步,注册回调函数xmlHttp.onreadystatechange =callback1;//{ // if (xmlHttp.readyState == 4) // if (xmlHttp.status == 200) { // var responseText = xmlHttp.responseText; // } //}//第三步,配置申请信息,open(),get //get申请下参数加在url后,.ashx?methodName = GetAllComment&str1=str1&str2=str2 xmlHttp.open("post", "/ashx/myzhuye/Detail.ashx?methodName=GetAllComment", true); //post申请下须要配置申请头信息 //xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); //第四步,发送申请,post申请下,要传递的参数放这 xmlHttp.send("methodName = GetAllComment&str1=str1&str2=str2");//"}//第五步,创立回调函数function callback1() { if (xmlHttp.readyState == 4) if (xmlHttp.status == 200) { //获得返回的数据 var data = xmlHttp.responseText; //json字符串转为json格局 data = eval(data); $.each(data, function(i, v) { alert(v); }); }}//后盾办法 public void GetAllComment(HttpContext context) { //Params能够获得get与post形式传递过去的值。 string methodName = context.Request.Params["methodName"]; //QueryString只能获得get形式传递过去的值。 string str1 = context.Request.Form["str1"]; //获得httpRequest传来的值,包含get与post形式 string str2 = context.Request["str2"]; List comments = new List(); comments.Add(methodName); comments.Add(str1); comments.Add(str2); //ajax承受的是json类型,须要把返回的数据转给json格局 string commentsJson = new JavaScriptSerializer().Serialize(comments); context.Response.Write(commentsJson); }
- 建设xmlHttpRequest对象
- 设置回调函数
- 应用open办法与服务器建设链接
- 向服务器发送数据
- 在回调函数中针对不同的响应状态进行解决
AJAX是有很多用途的,接下来给大家介绍AJAX须要把握的几个性能点:
1、创立原生Ajax对象
XMLHttpRequest 是 AJAX 的根底,所有古代浏览器(IE7+、Firefox、Chrome、Safari 以及 Opera)均内建 XMLHttpRequest 对象。那么咱们上面来创立一个ajax对象
const instance = new XMLHttpRequest();
这样咱们就创立了一个用于进行ajax交互的对象。
当然咱们这儿提及一下老版本的ie5、ie6的javascript对象都是应用ActiveX来实现的规范,所以没有XMLHttpRequest对象。他们创立一个对象应用这种形式
const instance = new ActiveXObject("Microsoft.XMLHTTP");
其实咱们理解一下就行了,这块在你的代码也不必加上了,当初所有的网站应该都放弃了对低版本ie的反对,这个曾经退出了历史舞台,理解一下状况即可。
2、Ajax发送申请
首先来看一下XMLHttpRequest如何发送一个申请到服务器
const instance = new XMLHttpRequest(); instance.open(method,url,async); instance.send();
这里用到了两个办法,第一个open办法其实是配置ajax必要的信息,第二个send才是真正的发动申请到服务器。
3、Ajax通过readyState状态的变动接管服务器响应
当申请被发送到服务器时,咱们须要执行一些基于响应的工作,每当 readyState 扭转时,就会触发 onreadystatechange 事件,readyState 属性存有 XMLHttpRequest 的状态信息。
4、进级苦恼之跨域申请
跨域是所有前端都必须去面对的一个辣手的问题,当你去申请其余服务器的资源时,浏览器平安限度会阻止该申请。你的申请不会到底服务器,被浏览器阻止了,这也是遵循了同源策略。
那么如何去解决这个跨域呢,通用的有几种办法,然而外围都是须要服务器去配合解决跨域,前端本人无奈解决跨域。
- 第一个采纳JsonP办法,这个办法其实也是须要后盾去配合解决,由后盾来进行申请,而后将数据拼装在一个json对象返回到前台,而后前台通过callback函数来进行操作。这个也比拟繁琐。
- 第二种就是服务端去放一个跨域文件crossdomain.xml搁置到服务器端,而后写上能够跨域的ip地址。
- 第三种配置反向代理服务器,通过代理服务器咱们也其实是代理服务器去申请外围,而后转发到咱们的服务器上。这样也能够避免跨域。
以上就是AJAX的常识总结,最初也举荐大家观看ajax的视频去学习,对于老手更易了解排汇,能源节点的Ajax学习教程,通过对ajax的传统应用形式,联合json操作的形式,联合跨域等高级技术的形式,对ajax做一个全面的解说。
Ajax材料下载:http://www.bjpowernode.com/?s...