2013-02-12 61 views
0

由于某些原因,以下代码在Internet Explorer中可用,但不适用于Chrome或Firefox。 我在此浏览器中收到:在Internet Explorer中收到但未在Chrome中收到的Ajax响应:

“无法检索滑块数据”。

警报。

我想用这个帮助一下。

谢谢。

这里是我的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); 
} 

+0

我建议你使用像'JQuery'这样的框架,它可以解决你的跨浏览器问题。 – KBN 2013-02-12 18:52:13

+0

@xFortyFourx有趣的是,你提到,在当前的jQuery版本中存在一个主要的问题:ajax – Christophe 2013-02-12 19:01:28

+0

@Christophe嗯,我没有意识到这一点。 – KBN 2013-02-12 19:02:16

回答

0

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

为了证实这一点,你可以检查返回request.status等于上Wikipedia同源策略0

更多信息。

+0

是否可以在这些浏览器中用于开发目的? – 2013-02-12 19:10:14

+0

我不这么认为。有些服务器支持CORS或JSONP,这是使客户端Ajax请求有效的唯一方法。 – Christophe 2013-02-12 19:11:34

1

我会用这个代替你的第一个if-else语句块:

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

你的生活变得更好的支持功能与测试测试浏览器。

+0

谢谢,但它实际上是相同的代码。您只需使用窗口对象进行预检即可解决某些人在Internet Explorer for Chrome中可能遇到的问题,结果相同。 – 2013-02-12 18:58:17

相关问题