2009-07-26 37 views
0

這是我的JavaScript代碼,它每10秒鐘ping Google,並顯示連接狀態到html MonitorInformation元素。但是當我單擊html文件進行調試時,顯示在MonitorInformation元素上的信息始終爲「正在連接...等待」。我調試了一段時間,但無法弄清楚。任何想法我的代碼有什麼問題?javascript連接到網站代碼不工作

HTML代碼:

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<script src="Monitor.js" type="text/javascript"></script> 
    <title>Web Site Monitor</title> 
</head> 
<body onload="setup()"> 
<div id="MonitorInformation">Connecting...wait</div> 
</body> 
</html> 

的Java腳本代碼:

function setup() { 
    window.setInterval(PingWebSite, (10 * 1000)); 
} 

function PingWebSite() { 
    conObj = new ActiveXObject("Msxml2.XMLHTTP"); 
    conObj.open("GET", "http://www.google.com", true); 
    conObj.onreadystatechange = function() { 
    if (conObj.readyState === 4) { 
     if (conObj.status === 200) {  
       loading.innerText = "Service is available";    
      } else { 
       MonitorInformation.innerText = "Service is not available"; 
      } 
     } else { 
      MonitorInformation.innerText = "Connecting to www.google.com ..."; 
     } 
    } 
} 

編輯1:使用JSON

function setup() { 
    window.setInterval(PingWebSite, (10 * 1000)); 
} 

function PingWebSite() { 

    var http_request = new XMLHttpRequest(); 
    http_request.open("GET", "http://www.google.com", true); 
    http_request.send(null); 
    http_request.onreadystatechange = function() { 
     if (http_request.readyState == 4) { 
      if (http_request.status == 200) { 
       MonitorInformation.innerText = "Connection ok"; 
       alert("ok"); 
      } else { 
      MonitorInformation.innerText = "Connection fail"; 
      alert("fail"); 
      } 
      http_request = null; 
     } 
    }; 
} 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<script src="Monitor.js" type="text/javascript"></script> 
    <title>Web Site Monitor</title> 
</head> 
<body onload="setup()"> 
<div id="MonitorInformation">Connecting...wait</div> 
</body> 
</html> 

由於事先 喬治

我修復
+1

JSON無法正常工作,您需要使用JSONP,它只在您正在訪問的服務提供時纔有效。 – FlySwat 2009-07-26 14:28:16

+0

我很困惑FlySwat,但是我在使用JSON的EDIT 1部分中發佈了代碼。任何意見? – George2 2009-07-26 14:29:56

回答

1

您無法跨越您無權訪問AFAIK的域XHR。

+0

我很驚訝。我無法使用JavaScript代碼從另一個網站獲取網頁並將其網格化爲我的網站? – George2 2009-07-26 14:12:40

+0

感謝soulscratch,我已經通過使用JSON修復了這個問題,請問您是否可以查看我的固定代碼? (我已經測試了函數的作品,但是像你這樣的來自Guru的評論讓自己更加自信。:-))請參閱我的代碼的編輯1部分。 – George2 2009-07-26 14:29:01

1

您可以使用隱藏的iFrame來解決跨域限制。讓你開始一個簡單的例子:

(HTML摘錄)

<body> 
    <div style="display: none;"> 
     <iframe id='hiddenFrame'></iframe> 
    </div> 
</body> 

的Javascript:

function setup() 
{ 
    var iFrame = document.getElementById('hiddenFrame'); 
    var changeEvent = function() 
    { 
     loading.innerText = "Service is Available"; 
    } 
    // IE 
    iFrame.onload = changeEvent; 
    // Firefox 
    iFrame.onreadystatechange = changeEvent; 

    setInterval(PingWebSite, (10 * 1000)); 
} 

function PingWebSite() { 
    var iFrame = document.getElementById('hiddenFrame'); 
    iFrame.src = 'http://www.google.com'; 
} 
1

難道你忘了一個分號嗎?例如:... body onload =「setup();」...