0

出于某种原因,以下代码适用于 Internet Explorer,但不适用于 Chrome 或 Firefox。在此浏览器中,我收到:

“无法检索滑块数据。”

警报。

我很想得到一些帮助。

谢谢。

这是我的 JavaScript 代码:

<script>

if (navigator.appName == "Microsoft Internet Explorer") 
{ 
    request = new ActiveXObject("Microsoft.XMLHTTP"); 
} 
else 
{ 
    request = new XMLHttpRequest(); 
}
if (request == null)
    alert ("Your browser doesn't support XMLHttpRequest");

function getSelectedText(elementId) 
{
var elt = document.getElementById(elementId);

if (elt.selectedIndex == -1)
    return null;

return elt.options[elt.selectedIndex].value;
}

function sendRequest()
{
    debugger;
    var type = getSelectedText('dropdown');
    //alert("The chosen type: "+type);
    var url = 'https://tomcat-emildesign.rhcloud.com/coupons/Client/serveranswer.jsp?type=' + type;
    request.open("GET", url, true); 
    request.onreadystatechange= processRequest; 
    request.send(null);
}

function processRequest() 
{
    if (request.readyState == 4) 
    {
        if (request.status == 200) 
        {
            parseMessage();
        } 
        else 
        {
            alert ( "Not able to retrieve sliders data." );
        }
    }
}

function parseMessage()
{
    // Assign the XML file to a var variable.
    var doc = request.responseXML; 
    var pending, hires, rejected;
    if(navigator.appName == "Microsoft Internet Explorer")
    {
        pending = doc.documentElement.getElementsByTagName('pending').item(0).text;
        hires = doc.documentElement.getElementsByTagName('hires').item(0).text;
        rejected =  doc.documentElement.getElementsByTagName('rejected').item(0).text;      
    }
    else
    {   
        pending = doc.documentElement.getElementsByTagName('pending')[0].textContent;   
        hires = doc.documentElement.getElementsByTagName('hires')[0].textContent;
        rejected = doc.documentElement.getElementsByTagName('rejected')[0].textContent;
    }
    alert("values:" + pending + "," + hires + "," + rejected);
}

4

2 回答 2

1

我会用这个替换你的第一个 if-else 块:

// Mozilla/Safari/Non-IE
if (window.XMLHttpRequest) {
    request = new XMLHttpRequest();
}
// IE
else if (window.ActiveXObject) {
    request = new ActiveXObject("Microsoft.XMLHTTP");
}

与测试浏览器相比,您最好测试对功能的支持。

于 2013-02-12T18:52:10.913 回答
0

我看不出你的代码有什么问题。问题可能是您正在执行一个在 Internet Explorer 中受信任但在其他浏览器中失败的跨域请求。

要确认这一点,您可以检查返回的 request.status 是否等于 0。

有关Wikipedia上的同源政策的更多信息。

于 2013-02-12T19:06:21.623 回答