首先,咱们来回顾下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);        }
  1. 建设xmlHttpRequest对象
  2. 设置回调函数
  3. 应用open办法与服务器建设链接
  4. 向服务器发送数据
  5. 在回调函数中针对不同的响应状态进行解决

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...