2011-03-16 44 views
2

JavaScript代碼:約IE8,Firefox3.6和Chrome一個簡單的AJAX的問題

var httprequest = new XMLHttpRequest(); 
var time = new Date(); 
if (httprequest) { 
    httprequest.onreadystatechange = function() { 
    if (httprequest.readyState == 4) { 
     alert("OK"); 
    } 
    }; 
    httprequest.open("GET", "http://www.google.com", false); 
    httprequest.send(null); 
} 
alert(new Date() - time); 

IE8:OK,時間對話框會提示 Chrome10:OK對話框提示,但時間對話框不要提示 Firefox3的.6:好的,時間對話框不會提示

爲什麼一些對話框不能及時提示?

回答

1

httprequest.send(null)在你的情況下根本不會返回 - 它阻止了js代碼的執行,所以在那行之後的任何東西都不會被執行 - 我不能告訴你爲什麼它會這樣做,它可能會在特定的瀏覽器或其他東西上具體實現。

你想在這裏做的是異步運行:變「假」到「真」時調用「打開」方法:

httprequest.open("GET", "http://www.google.com", true); 

與此相關的 - 如果你要開始打ajax,請嘗試一些JavaScript框架,如jQuery - 他們做了一件讓您的生活更輕鬆的工作,因爲js開發人員提供了與瀏覽器無關的方法來處理DOM,事件,ajax等等。

+0

謝謝!塊的原因是開放方法的錯誤參數。 – maxima 2011-03-16 06:56:24

+0

我想計算這個ajax請求的時間並且想要同步。將此參數設置爲true將解決此問題。 – maxima 2011-03-16 06:58:39

0

問候最大值 你的代碼是確定和安德烈的回答是偉大的,我有2注:)

1的XMLHttpRequest不能做請求在您的域的出方,如果你需要申請首頁輸出側域做它的服務器端。

2-在Andrey注意逃離到jquery對不起,我不與他在那,你應該學習關於JavaScript的每一件事情,先做個專業人士,然後用jquery玩jquery, openion不是某個圖書館的用戶之前不是一個JavaScript專業版

+0

1.感謝提醒跨越原點。 2.我嘗試了jQuery庫,jQuery爲用戶做了很多事情。 – maxima 2011-03-16 09:07:22

+0

歡迎:)) – Marwan 2011-03-16 11:17:46