钢窟.

ShellEx的钢窟.

全金属外壳ID:ShellEx
49563次访问,排名2087好友0人,关注者0
ShellEx的文章
原创 44 篇
翻译 1 篇
转载 8 篇
评论 123 篇
全金属外壳(ShellEx)的公告
很遗憾,ShellEx要和CSDN Blog说88了. 以后再也不会受到*访问速度*, *更新延迟*, *服务器错误*...等困扰了. 以后,我ShellEx的新文章将全面转移至China Unix Blog: 地址: http://shellex.cublog.cn/ 欢迎各位新老贵客来访.
最近评论
hdnero:wow power leveling
人:new enevt 是什么意思啊
李佳:我要告诉全世界:"我真的很爱王守满"]真的很爱

我答应等他三年
他三年之后会回来找我
我相信他
他不会骗我的




我要告诉全世界
:"我爱(王守满)"
李佳:我要告诉全中国:"我真的很爱王守满"]真的很爱
SmartJacky:你好,我需要VA的注册包,谢谢!

smartjacky@126.com
文章分类
收藏
    相册
    Games
    文字配图
    作者的设计/手绘作品
    作者作品
    钢窟1号通信接口
    CSDN
    Milw0rm(RSS)
    安全焦点
    科幻世界
    黑客防线
    钢窟2号通信接口
    Asoft's 记忆碎片
    battle_Elf的鹰巢
    lake2的地盘(RSS)
    phixcoco@icdesign(RSS)
    Rejetto's Play House
    Wenisy的爱情流放地
    北斗星君的专栏(RSS)
    爱唱歌的狗狗(RSS)
    秋镇菜?的专栏
    老妖洞
    钢窟3号通信接口
    Looby's
    乌托邦帮主的地盘
    钢窟内部通信接口
    我的163相册
    钢窟.个人主页
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 与Ajax邂逅.收藏

    新一篇: 很遗憾,和CSDN Blog说88了 | 旧一篇: 扩展你的WIndows标准控件

                            与Ajax邂逅.
                                    作者:ShellEx(全金属外壳)
        上下文(此部分加密):
           ^*&$*UE*W&E*@()$*()@$@)($DWDWW.
        环境:
           Windows 2k3 sp1
               *FireFox 2.0
               *Opera 9.10
               *IE 7 beta 3

        问题与解决方案:
        问题一:在Opera和IE中页面数据不会定时更新.根据setInterval('Refresh()',1000);每次Refresh函数完毕后应当能从服务器端得到新数据来更新页面元素,但是只有FireFox工作正常,其他俩浏览器的数据会保持第一次的数据.
        解决方案1: 估计是缓存问题. 先把
            xmlRequest.open('GET', file, true);
            改成
            xmlRequest.open('POST', file, true);
        Opera有效,IE无效.
        在数据源页面clock.php后加随机参数:
            ajaxRead('clock.php?id=' + Math.random() * 10);
        Opera有效,IE无效.   
        通过调试,发现问题二:
        问题二: xmlRequest.onreadystatechange只触发一次.本来根据setInterval('Refresh()',1000);, Refresh函数应当会执行若干次,每次发出一个XMLHttpRequest请求.但是在IE中确行不通.这可能是问题一无法根本解决的原因.
        解决方案2: 把原来只创建一个全局XMLHttpRequest对象改成每次请求都重新创建:
                    function ajaxRead(file){
                        var xmlRequest = CreateXMLObj();
                        .....
                    }
        同样的,IE也存在缓存问题,于是测试 解决方案1:
            xmlRequest.open('POST', file, true);
        Opera有效,IE无效.
        在数据源页面clock.php后加随机参数:
            ajaxRead('clock.php?id=' + Math.random() * 10);
        Opera有效,IE有效.
        于是问题一,二得到解决.
        问题三: FireFox和IE对XML的解析. clock.php返回的是一个xml格式的字符串.开始我是这样解析的:
                    var xmlDoc = xmlRequest.responseXML;
                    var root_node = xmlDoc.getElementsByTagName('time')[0];
                    Updata('xmlObj', root_node.firstChild.data);
        很遗憾,该方法只在Opera中解析成功.在FF下Firebugs提示getElementsByTagName有错,在IE下测试后我发现root_node始终为null.
        解决方案3:
        对于FF,在创建 XMLHttpRequest对象后应当这么写:
                    xmlObj = new XMLHttpRequest();
                    try{
                        xmlObj.overrideMimeType('text/xml');
                    }catch(e) {....}
        因为服务器响应若没有XML mime-type header,后面的xmlDoc.getElementsByTagName('time')无法正常工作.
        如果不添加xmlObj.overrideMimeType('text/xml')也可以,使用DOMParser()解析XML就可以了.代码如下:
                     var parser=new DOMParser();
                     var xmlDoc=parser.parseFromString(xmlRequest.responseText,"text/xml");   
                    //代替var xmlDoc = xmlRequest.responseXML;
        对于IE,则应当用XMLDOM:
                     var xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
                     xmlDoc.async="false";
                     xmlDoc.loadXML(xmlRequest.responseText);
        结合起来,就是这样
                    if (! window.ActiveXObject) {
                        
    var parser=new DOMParser();
                        
    var xmlDoc=parser.parseFromString(xmlRequest.responseText,"text/xml");   
                        
    //var xmlDoc = xmlRequest.responseXML;
                    }
     else  {       
                        
    var xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
                        xmlDoc.async
    ="false";
                        xmlDoc.loadXML(xmlRequest.responseText);
                    }

                    
    var root_node = xmlDoc.getElementsByTagName('time')[0];
                    Updata(
    'xmlObj', root_node.firstChild.data);

        解决问题三.
        嗯,记录下来,留作备忘.

    发表于 @ 2007年02月09日 16:03:00|评论(loading...)|编辑

    新一篇: 很遗憾,和CSDN Blog说88了 | 旧一篇: 扩展你的WIndows标准控件

    评论:没有评论。

    发表评论  


    登录
    Csdn Blog version 3.1a
    Copyright © 全金属外壳(ShellEx)