function RequstSend()
{
var XmlHttp = new XMLHttpRequst();
var url = "Test.cgi";
XmlHttp.open('GET', url, true);
XmlHttp.send(null);
XmlHttp.onreadystatechange = function() {
if (XmlHttp.readyState == 4)
{
if (XmlHttp.status == 200)
{
alert(XmlHttp.responseText);
}
}
};
}
在 XmlHttp.status 預期成功的話會收到 200 OK 的訊息, 而 XmlHttp.responseText 會收到 Server 傳過來的內容.
但是幾次的測試下, 發現 status 都回傳 "0", 而且 responseText 內容都是空的,
而用 firebug 查看了一下 XmlHttp 的 statusText property, 結果又是顯示 "OK" 的字樣
想說都已經 OK 了, 怎麼 status 不是預期的 200, 而內容又為何會空的呢 ?
後來我想是不是我連結 page 與我去 request 的 page (test.cgi) 所在的角色並不同呢 ?
結果就發現..因為我連結測試網頁, 在 browser 上所顯示的 url 是以檔案路徑的方式去拿取 (ex: file:///D:/www/index.html) 而對於 request 的 page 來說像是去要另外一個 server 上的 file 一樣.
所以若是 url = "http://youraddress/test.cgi" 所得到的 status == 0 , responseText 為空的; 若是 url = "test.cgi" 所得到的 status == 0, responseText 為整個檔案內容, 而不是我們預期出現的 response 內容.
所以我們若是連結我們的 page , 以 http://youraddress/index.html , 而 test.cgi 放置與 index.html 放置同一個 directory, 則以 http request 回來的 status 就是 200 OK, 而內容也是我們預期 server 回應的內容了.
Reference link : Using XMLHttpRequest