欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

ajax进度条特效怎么写(ajax异步实时加载进度条详解)

程序员文章站 2023-11-24 21:46:10
一、ajax的简介ajax被认为是(asynchronous(异步) javascript and xml的缩写)。现在,允许浏览器与服务器通信而无须刷新当前页面的技术都被叫做ajax.同步是指:发送...

一、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还有很多简单变形的写法。