【发布时间】:2012-03-07 14:11:36
【问题描述】:
--更新代码以使其...更简单--
有点奇怪,根据 w3schools 的说法,我的代码应该可以工作,但由于某种原因它没有...连接。这是我的java脚本代码。
XHTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
</head>
<body>
<p id="intro">Hello</p>
<script type="text/javascript" id="announce" src="announce.js"></script>
</body>
</html>
JavaScript
/*jscript*/
var newannouncement = document.createElement('p');
newannouncement.id = 'announcing';
newannouncement.appendChild(document.createTextNode('Here is an announcement'));
var scr = document.getElementById('announce');
scr.parentNode.insertBefore(newannouncement, scr);
if(window.XMLHttpRequest)
{
xmlhttp=new XMLHttpRequest();
} else {
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
**xmlhttp.open("GET", "catalog.xml",false);**
xmlhttp.send();
xmlDoc=xmlhttp.responseXML;
var x=xmlDoc.getElementsByTagName("cd");
for (i=0; i<x.length; i++)
{
alert("for")
}
XML
<?xml version="1.0"?>
<catalog
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="catalog.xsd">
<cd>
<author>Ferdi</author>
<date>1192</date>
</cd>
<cd>
<author>JRR</author>
<date>1995</date>
</cd>
</catalog>
更新 1
由于我认为之前的代码过于混乱,因此我对其进行了更改以使其更简单,以便我可以真正找出到底是什么东西在破解。问题似乎是 xmlhttp.open() 因为 for 循环没有运行。我已切换到 xhtml,因为它保留了代码……更易于阅读(对我而言),而且我知道 document.write() 不起作用。
问题
我只是直接调用函数。 * 表示失败的行。现在,我尝试将其保留为announce.xml(将announce.xml 保留在同一目录中),现在我尝试将其移至目录中。我也尝试添加 /../ 但无济于事。
我在 w3schools 网站上没有看到任何“技术”要求......所以我假设它像 html 一样开箱即用。
补充说明
如果可能的话,如果您要推荐 AJAX 等技术,请您描述一下它是什么、它的作用以及如果可能的话,请提供指向合适位置的链接以了解更多信息。谢谢
【问题讨论】:
-
所有文件都在同一个目录下...
-
我怀疑是这样的:stackoverflow.com/questions/5396527/… 该示例使用 jQuery AJAX,但它也适用于
xmlhttprequest。 -
您可以考虑使用 jquery,因为它简化了从服务器获取文件/数据的各个方面。 api.jquery.com/jQuery.get 是一个很好的起点。它确实需要您加载一个额外的库,但它封装了 XMLHttp 请求,因此您不必担心哪个浏览器可以使用哪个对象以及错误状态等。您告诉 api 要访问的 url、要发送的数据(如果有)、期望返回的内容、请求成功完成时要执行的操作以及发生错误时要执行的操作。
-
jQuery 目前不是一个选项。主要是因为需要学习并且与添加的软件有一点关系……你知道他们说什么,太多的厨师会破坏肉汤。但重点。
标签: javascript html xml ajax