作者sheeper (as)
看板Ajax
標題[問題] XMLHttpRequest 範例
時間Thu Dec 31 09:21:09 2009
小弟爬了之前的文章 照著下面的網址作了一個簡單的程式
https://developer.mozilla.org/En/Using_XMLHttpRequest
結果 xmlhttp.status 總是傳回 0
用 firebug 還看到如下可怕的 error :
uncaught exception: [Exception... "Component returned failure code:
0x80004005 (NS_ERROR_FAILURE) [nsIXMLHttpRequest.send]" nsresult: "0x80004005
(NS_ERROR_FAILURE)" location: "JS frame ::
http://localhost/test.html ::
dumpPage :: line 18" data: no]
懇請各位大大幫忙看一下怎麼回事 謝謝
測試程式如下 :
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"
http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html>
<head>
<title>Dump webpage</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript">
function dumpPage() {
document.getElementById('theExample').innerHTML = 'start dump
page';
if (window.XMLHttpRequest) { // code for Mozilla, Safari, etc
xmlhttp=new XMLHttpRequest();
xmlhttp.onreadystatechange=raw;
str = "
http://www.mozilla.org/";
xmlhttp.open("GET", str, true);
xmlhttp.send(null);
}
}
function raw() {
if (xmlhttp.readyState==4) {
if (xmlhttp.status==200) {
document.getElementById('theExample').innerHTML=xmlhttp.responseText;
}
}
}
</script>
</head>
<body>
<div id="theExample">Loading...</div>
<br/>
<br/>
<input type="button" onclick="dumpPage()" value="Dump Page" />
</body>
</html>
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 98.234.115.90
1F:→ TonyQ:你code中沒有插你看status的code , 你在哪看 status 是 0 ?? 12/31 10:12
2F:→ TonyQ:另外正常狀況下 , raw 在一次request 的期間會被調用3-4次 12/31 10:13
3F:→ TonyQ:readyStata==4 跟 status==200 12/31 10:13
4F:→ TonyQ:還有 , 你應該要用一個全域變數來放xmlhttp , 以你的例子來 12/31 10:14
5F:→ TonyQ:講 raw 這個function 中 , xmlhttp 是會有存取scope的問題的 12/31 10:14
6F:→ TonyQ:發現第三行漏字:所以才要判斷 readyState 跟 status 12/31 10:16
7F:→ TonyQ:最後 , 你get的是一個外部網域的網址 , 根據安全性原則 12/31 10:16
8F:→ TonyQ:request 只能 request 與原網頁所在處同網域的內. 12/31 10:17
9F:→ TonyQ:如果有問題就貼有問題的code , 不要貼別人的sample. 12/31 10:17
10F:→ sheeper:發現問題出在request 只能 request 與原網頁所在處同網域 12/31 13:08
11F:→ sheeper:謝謝 TonyQ 的詳細解釋 12/31 13:09