在Safari中,XML响应无效

时间:2011-06-10 10:00:07

标签: javascript ajax

我们试过这样的,请检查并提出建议。

function GetXmlHttpObject()
{ 
    var objXMLHttp=null;
    if (window.XMLHttpRequest)
    {
        objXMLHttp=new XMLHttpRequest();
    }
    else if (window.ActiveXObject)
    {
        objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP");

    }
    return objXMLHttp;
} 


function show(url,did)
{
    divId=did;
    xmlHttp=GetXmlHttpObject();
    if (xmlHttp==null)
    {
        alert ("Browser does not support HTTP Request");
        return;
    }
    if(url.indexOf("?")!=-1)
    url=url+"&sid="+Math.random();
    else
    url=url+"?sid="+Math.random();

    xmlHttp.open("GET",url,true);
    xmlHttp.onreadystatechange=stateChanged;
    xmlHttp.send(null);

} 

function stateChanged()
{ 

    if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
    { 
        document.getElementById(divId).style.display='block';
        document.getElementById(divId).innerHTML=xmlHttp.responseText;
    }
}

2 个答案:

答案 0 :(得分:0)

看起来你根本就没有使用jQuery。不同浏览器的Ajax处理方式截然不同,但jQuery提供了抽象,因此您不必担心它。 查看API文档,可以使用较低级.ajax()方法,也可以查看一些更简单的简写方法,例如.get().post()

http://api.jquery.com/jQuery.get/
http://api.jquery.com/jQuery.ajax/
http://api.jquery.com/jQuery.post/

答案 1 :(得分:0)

尝试使用||替换逻辑&&运算符:

function stateChanged()
{ 
    if (xmlHttp.readyState == 4 && xmlHttp.status == 200)
    { 
        document.getElementById(divId).style.display='block';
        document.getElementById(divId).innerHTML=xmlHttp.responseText;
    }
}