- 更新了代码,使其更简单 -
有点奇怪的情况,根据w3schools我的代码应该工作,但由于某种原因它不...连接。这是我的java脚本的代码。
<!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>
/*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 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>
由于我考虑过以前的代码,太混乱了,我已经改变它以使其变得更简单,以便我可以真正找出什么是破解。问题似乎是xmlhttp.open(),因为for循环不运行。我已经切换到xhtml,因为它保持代码...更容易阅读(对我来说),我明白document.write()不起作用。
我只是简单地调用函数。 * 表示失败的行。现在,我尝试将其保留为announce.xml(将announce.xml保留在同一目录中),我现在尝试将其移至目录中。我也尝试添加/../但无济于事。
我没有在w3schools网站上看到任何“技术”要求......所以我假设它像html一样开箱即用。
如果你想建议技术,如AJAX,如果可能的话,你可以描述它是什么,它做了什么,如果可能的话,链接到合适的地方以了解更多信息。感谢
答案 0 :(得分:0)
(这不是一个真正的答案,而是一个评论,但是我有几点我想做的,这在回答中更容易。)
您是否在浏览器中使用调试器(Firefox的FireBug扩展或Chrome或IE内置的扩展)?调试器中的控制台是否报告错误?此外,调试器还可以跟踪浏览器发出的请求。它是否显示您的要求?
有几点与您的问题无关:
document.write
非常小心。它仅在页面加载期间起作用,因为您正在执行同步请求。在其他情况下,您可以使用它轻松“覆盖”您的页面。编辑:
问题很可能是@bazmegakapa建议的:XMLHttpRequest
通常仅在Web服务器上有效。您需要做的是在开发计算机上本地安装Web服务器并将其用于测试。这通常很简单。即使Apache也可以快速安装,并且运行时配置很少。或者是一个包含Apache的包,包括一个名为"AMP"的数据库服务器(MySQL)和PHP,它们通常专门用于本地网页开发和测试,并且设置得更加容易。最后,许多Web开发IDE都内置了一个简单的Web服务器(例如,我喜欢Aptana Studio)。
您正在做的通常称为"AJAX",它代表“异步JavaScript和XML”,除非您不是异步执行,您不应该这样做。看一下Mozilla开发者网络工作的简短教程如何做到正确:https://developer.mozilla.org/en/AJAX/Getting_Started
如果您仍有问题,那么您需要提供更详细的信息,最重要的是浏览器在其控制台中提供的错误消息(请参阅上面关于调试器的评论)。