作者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