'获得'数据从xml通过javascript输入到html(初学者)

'Getting' data from xml to input into html via javascript (Beginner)

本文关键字:html 初学者 输入 通过 获得 数据 xml javascript      更新时间:2023-09-26

-更新代码使其…更简单--

有点奇怪的情况,根据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(将announcexml保留在同一目录中),现在我尝试将它向下移动到一个目录中。我还尝试添加/../但无济于事。

我在w3schools网站上没有看到任何"技术"要求。。。所以我假设它像html一样开箱即用。

进一步说明

如果可能的话,如果你打算推荐AJAX等技术,你能描述一下它是什么,它做了什么,如果可能,还可以提供一个合适的地方的链接来了解更多信息吗。感谢

您是否在浏览器中使用调试器(Firefox的FireBug扩展,或Chrome或IE内置的扩展)?调试器中的控制台是否报告错误?调试器还可以跟踪浏览器发出的请求。它显示了你的请求吗?

有几个点与您的问题无关:

  • 对w3schools要非常小心。尽管它的名字与W3C无关,而且质量往往非常缺乏
  • 你没有使用jQuery这样的AJAX框架有什么特别的原因吗?(如果你想了解AJAX的基本原理,不使用它是很好的,但框架确实简化了一切)
  • 您正在执行同步请求,而这是不应该执行的。同步请求会阻止浏览器,使其对用户无响应
  • 使用document.write时需要非常小心。它只在页面加载期间工作,并且因为您正在执行同步请求。在其他情况下,你可以很容易地用它"覆盖"你的页面

编辑:

问题很可能是@bazmagakapa所建议的:XMLHttpRequest通常只在网络服务器上工作。您需要做的是在开发计算机上本地安装一个web服务器,并使用它进行测试。这通常很简单。即使是Apache也可以快速安装并运行,只需很少的配置。或者是一个包含Apache的包,其中包括一个名为"AMP"的数据库服务器(MySQL)和PHP,它们通常是专门为本地网页开发和测试而设计的,设置起来更容易。最后,许多web开发IDE都内置了一个简单的web服务器(例如,我喜欢Aptana Studio)。

您所做的通常被称为"AJAX",它代表"异步JavaScript和XML",但您不应该异步进行。看看Mozilla开发者网络的一个简短教程,了解如何正确操作:https://developer.mozilla.org/en/AJAX/Getting_Started

如果你仍然有问题,那么你需要提供更详细的信息,最重要的是浏览器在控制台中给出的错误消息(请参阅我上面对调试器的评论)。