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同步传输!

发表评论:

    昵称:
    密码:
    标题:
“新竞争力”是深圳市竞争力科技有限公司的注册商标
深圳市竞争力科技有限公司 版权所有
电话:86-755-26502263  Email:info@jingzhengli.cn