文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>使用Ajax时添加进度显示!

使用Ajax时添加进度显示!

时间:2007-02-18  来源:PHP爱好者

当我们的项目中引入Ajax技术的时候,由于不对浏览器进行刷新,所以当操作对界面元素修改比较少的情况下,用户很难发现自己的操作是否完成.
(当然我们可以使用鲜明颜色的字体,来完成我们的提示).但是这样的解决方案在有些时候,还是不能满足用户的需求,那我们应该怎么办呢?
于是我参考别人的代码,根据自己的需求写了下面这个”显示进度”的小Demo!

我在给出程序的代码之前,先说说我个人的思路.我们都知道XMLHttpRequst对象,在执行请求的时候,存在五种不同的状态:
readyState
对象状态(integer):
0 = 未初始化
1 = 读取中
2 = 已读取
3 = 交互中
4 = 完成

我就是根据这五种不同的状态,来达到显示进度的目的.在请求处于不同的状态的时候,来显示不同的文本,这样就会形成完整进度显示.

下面的是主程序的代码:
客户端
CODE:
[复制到剪切板]
<HTML>
    <head>
        <title>显示进度</title>
        <style type="text/CSS"> #loadifo {}{ position: absolute; top: 200px; width: 120px; background: #F69; padding: 10px; filter: Alpha(Opacity=90); text-align: center; color: #FFF; border: 1px dashed #909; left: 400px; }
    </style>
        <script language="JavaScript" src="http://localhost:87/js/Ajax.js"></script>
        <script language="JavaScript">
         function checkCode(){
                    changeDisplay("loadifo" ,"block");
                    var uri ="/Ajax/CallServer.ASPx?timeStamp="+new Date().getTime();
                    var checks = new ajax.req(uri,toCheck ,null ,checkState);
                    close_object();
                }
            function toCheck(){
                    var data = this.XMLHttp.responsetext;
                    alert(data);
                    changeDisplay("loadifo" ,"none");
                }
            function checkState(){
                if(this.XMLHttp.readyState == 1){
                    getId("loadifo").innerHTML = "连接服务器";
                    }
                else if(this.XMLHttp.readyState == 2){
                    getId("loadifo").innerHTML = "开始加载数据";
                    }
                else if(this.XMLHttp.readyState == 3){;
                    getId("loadifo").innerHTML = "正在加载数据"
                    }
                else if(this.XMLHttp.readyState == 4){
                    if(this.XMLHttp.status == 200){
                    getId("loadifo").innerHTML = "加载完成";
                    setTimeout(loadifo)                
                    }
                    else{
                        getId("loadifo").innerHTML = "错误是:"+this.XMLHttp.status+"";
                    }
                }
            }
        </script>
    </head>
    <body>
        <input id="div" type="button" onclick="checkCode();" value="测试">
        <div id="loadifo" style="DISPLAY:none"></div>
    </body>
</HTML>  php爱好者站 http://www.phpfans.net Linux|Apache|IIS.
对以上代码进行几点说明:
1.Ajax.js文件,是我在以前文章提到的框架,地址:http://hjh1982.cnblogs.com/archive/2006/07/19/454630.HTML.
2.代码中还有几个js函数,分别是:
js函数
//根据对象的ID返回对象本身
function getId(objId){
    return document.getElementById(objId);
}

//设置对象过时时间
function setTime(obj){
    setTimeout(obj,1000);
}

//改变指定对象的显示模式
//objId是对象的id值
//state是对象更改后的状态
function changeDisplay(objId ,state){
    getId(objId).style.display = state;
}其实,我认为,当我说明了我的思路以后,大家就能把代码写出来,肯定还会比我写的好!
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载