« appendchild介绍Flash+XML中文不显示问题 »

firefox中的ajax 问题

以前很少使用到ajax同步传输,也没有注意到其在firefox中的表现!前两周因项目需要,使用到了ajax同步传输,但在测试中发现一般使用的程序firefox中的ajax同步传输无法执行。相同代码,异步状态在firefox下正常,但无法实现需要的功能!

<script language="javascript" type="text/javascript"> 
function GetData()
{
     var result;
     var xmlhttp = create_XML_object();
     xmlhttp.open("POST", "/test.aspx", false);
     xmlhttp.onreadystatechange=function()
     {
         if (xmlhttp.readyState==4)
         {
             result = xmlhttp.responseText;
         }
     }
     xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
     xmlhttp.send(null);
     return result;
}
</script>

 

     以上基础的ajax调用代码,ajax异步传输在所有浏览器正常,ajax同步传输在IE等其他浏览器中正常,在firefox中的ajax同步传输不会起作用!
     究其原因,就是firefox经常打起的标准大旗(可害苦了不少人),firefox中对ajax同步请求是不调用状态改变函数onreadystatechange的,firefox中的ajax同步传输则在xmlhttp.send(null)之后直接使用xmlhttp.responseText便可获取ajax同步传输返回值!那么我们在JS中就先判断浏览器类型,然后调用不同的代码实现ajax同步传输,代码如下:

<script language="javascript" type="text/javascript">
function getOs()
{
   var OsObject = "";
   if(navigator.userAgent.indexOf("MSIE")>0) {
        return "MSIE";       //IE浏览器
   }
   if(isFirefox=navigator.userAgent.indexOf("Firefox")>0){
        return "Firefox";     //Firefox浏览器
   }
   if(isSafari=navigator.userAgent.indexOf("Safari")>0) {
        return "Safari";      //Safan浏览器
   }
   if(isCamino=navigator.userAgent.indexOf("Camino")>0){
        return "Camino";   //Camino浏览器
   }
   if(isMozilla=navigator.userAgent.indexOf("Gecko/")>0){
        return "Gecko";    //Gecko浏览器
   }
}
function GetData()
{
     var result;
     var xmlhttp = create_XML_object();
     xmlhttp.open("POST", "/test.aspx", false);
     var btype=getOs();
     if(btype!="Firefox")
     {
        xmlhttp.onreadystatechange=function()
        {
            if (xmlhttp.readyState==4)
            {
                result = xmlhttp.responseText;
            }
        }
    }
     xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
     xmlhttp.send(null);
     if(btype=="Firefox")
     {
         result = xmlhttp.responseText;
     }
     return result;
}
</script>

     大功告成,实现在firefox中的ajax同步传输!

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

网站目录

最近发表

最新评论及回复

文章归档

Search

Powered By Z-Blog 1.8 Terminator(beta) Build 71218 Designed by Michael

Copyright 0-9999 subin.org.cn Rights Reserved. 晋ICP备08000685号