ajax的jquery写法和原生写法

一、ajax的简介

Ajax被认为是(Asynchronous(异步) JavaScript And Xml的缩写)。现在,允许浏览器与服务器通信而无须刷新当前页面的技术都被叫做Ajax.

同步是指:发送方发出数据后,等接收方发回响应以后才发下一个数据包的通讯方式。  

异步是指:发送方发出数据后,不等接收方发回响应,接着发送下个数据包的通讯方式 。

 

二、ajax的缺陷

AJAX大量使用了JavaScript和AJAX引擎,而这个取决于浏览器的支持。IE5.0及以上、Mozilla1.0、NetScape7及以上版本才支持,Mozilla虽然也支持AJAX,但是提供XMLHttpRequest的方式不一样。所以,使用AJAX的程序必须测试针对各个浏览器的兼容性。

AJAX更新页面内容的时候并没有刷新整个页面,因此,网页的后退功能是失效的;有的用户还经常搞不清楚现在的数据是旧的还是已经更新过的。这个就需要在明显位置提醒用户“数据已更新”。

对流媒体的支持没有FLASH好。

一些手持设备(如手机、PDA等)现在还不能很好的支持Ajax。


三、ajax的四种type类型:

1、GET请求会向数据库发索取数据的请求,从而来获取信息,该请求就像数据库的select操作一样,只是用来查询一下数据,不会修改、增加数据,不会影响资源的内容,即该请求不会产生副作用。无论进行多少次操作,结果都是一样的。

2、与GET不同的是,PUT请求是向服务器端发送数据的,从而改变信息,该请求就像数据库的update操作一样,用来修改数据的内容,但是不会增加数据的种类等,也就是说无论进行多少次PUT操作,其结果并没有不同。

3、POST请求同PUT请求类似,都是向服务器端发送数据的,但是该请求会改变数据的种类等资源,就像数据库的insert操作一样,会创建新的内容。几乎目前所有的提交操作都是用POST请求的。

4、DELETE请求顾名思义,就是用来删除某一个资源的,该请求就像数据库的delete操作。

简单的说就是

get理解为查询 delete就是删除 post就是新增 put就是更新数据

 

四、ajax的原生写法 

window.onload = function () {
var oBtn = document.getElementById("btn1");
   oBtn.onclick = function () {
//1.创建ajax对象
       //只兼容非ie6的浏览器,在ie6浏览器上运行会提示没有被定义
       //var oAjax = new XMLHttpRequest();//这才是ajax实际的请求
       //alert(oAjax);
       //ie6浏览器下按照下面方法写,但是在别的浏览器中不能用,会报错。
       //var oAjax = new ActiveXObject("Microsoft.XMLHTTP");
       //alert(oAjax);
       //鉴于上面出现的问题,可以采取下面的方法解决,用if判断是否为IE6浏览器
       if (window.XMLHttpRequest)//如果有XMLHttpRequest,那就是非IE6浏览器。()里面加window的原因下面会有描述。
       {
var oAjax = new XMLHttpRequest();//创建ajax对象
       }
else//如果没有XMLHttpRequest,那就是IE6浏览器
       {
var oAjax = new ActiveXObject("Microsoft.XMLHTTP");//IE6浏览器创建ajax对象
       }

//2.连接服务器
       //open(方法、文件名、异步传输)
       //方法:
       //传输方式是get方式还是post方式。
       //文件名
       //告诉服务器要读哪个文件
       //异步传输
       //异步:多件事一件一件的做
       //同步:多件事情一起进行
       //但是js里面的同步和异步和现实的同步异步相反。
       //同步:多件事一件一件的做
       //异步:多件事情一起进行
       //ajax天生是用来做异步的
       oAjax.open("GET", "a.txt?t='+new Date().getTime()", true);//加上t='+new Date().getTime()"的目的是为了消除缓存,每次的t的值不一样。
       //3.发送请求
       oAjax.send();
       //4.接收返回
       //客户端和服务器端有交互的时候会调用onreadystatechange
       oAjax.onreadystatechange = function () {
//oAjax.readyState  //浏览器和服务器,进行到哪一步了。
           //0->(未初始化):还没有调用 open() 方法。
           //1->(载入):已调用 send() 方法,正在发送请求。
           //2->载入完成):send() 方法完成,已收到全部响应内容。
           //3->(解析):正在解析响应内容。
           //4->(完成):响应内容解析完成,可以在客户端调用。
           if (oAjax.readyState == 4) {
if (oAjax.status == 200)//判断是否成功,如果是200,就代表成功
               {
alert("成功" + oAjax.responseText);//读取a.txt文件成功就弹出成功。后面加上oAjax.responseText会输出a.txt文本的内容
               }
else {
alert("失败");
               }
}
};
   }
};

五、ajax的jquery写法:

$.ajax({
url: "http://www.microsoft.com", //请求的url地址
   dataType: "json", //返回格式为json
   async: true, //请求是否异步,默认为异步,这也是ajax重要特性
   data: {
"id": "value"
   }, //参数值
   type: "GET", //请求方式
   processData: false, //对表单data数据是否进行序列化
   contentType: false, //dataType设置你收到服务器数据的格式
   xhr: function () { //ajax进度条
       var xhr = $.ajaxSettings.xhr();
       if (onprogress && xhr.upload) {
xhr.upload.addEventListener("progress", progressBar, false);
           return xhr;
       }
},
   beforeSend: function () {
//请求前的处理
   },
   success: function (req) {
//请求成功时处理
   },
   complete: function () {
//请求完成的处理
   },
   error: function () {
//请求出错处理
   }
});

当然,jquery还有很多简单变形的写法。


文章的最后顺便给大家推荐一个Java架构方面的交流学习qq群:858397628,里面不仅可以交流讨论,还有面试经验分享以及免费的资料下载,包括Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。相信对于已经工作和遇到技术瓶颈的码友,在这个群里会有你需要的内容。


640?wx_fmt=gif

640?wx_fmt=png


640?wx_fmt=jpeg

640?wx_fmt=png

如有侵权,请联系删除

转载请注明来源

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值