2013-02-12 36 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

相關問題