通过javascript从xml“获取”数据以输入html(初学者)

通过javascript从xml“获取”数据以输入html(初学者),javascript,html,xml,ajax,Javascript,Html,Xml,Ajax,-更新的代码使它…更简单- 这是一种奇怪的情况,根据w3schools的说法,我的代码应该可以工作,但由于某种原因,它无法…连接。下面是我的java脚本代码 XHTML JavaScript XML 更新1 由于我认为前面的代码太混乱了,所以我对其进行了修改,使其更简单,这样我就可以真正了解到底是什么在破解。问题似乎是xmlhttp.open,因为for循环没有运行。我已经切换到xhtml,因为它使代码更易于阅读,我理解document.write不起作用 问题 我只需在线调用函数。*表示发生故

-更新的代码使它…更简单-

这是一种奇怪的情况,根据w3schools的说法,我的代码应该可以工作,但由于某种原因,它无法…连接。下面是我的java脚本代码

XHTML JavaScript XML 更新1 由于我认为前面的代码太混乱了,所以我对其进行了修改,使其更简单,这样我就可以真正了解到底是什么在破解。问题似乎是xmlhttp.open,因为for循环没有运行。我已经切换到xhtml,因为它使代码更易于阅读,我理解document.write不起作用

问题 我只需在线调用函数。*表示发生故障的线路。现在,我尝试将其保留为announce.xml,将announce.xml保留在同一目录中,并尝试将其向下移动到一个目录中。我也尝试过添加//但没有效果

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

进一步说明
如果可能的话,如果你要推荐技术,比如AJAX,请描述一下它是什么,它做什么,如果可能的话,请提供一个链接到一个合适的地方以了解更多信息。谢谢

这不是一个真正的答案,而是一个评论,不过我想说几点,这在回答中更容易

您是在Firefox浏览器FireBug扩展中使用调试器,还是在Chrome或IE中内置调试器?调试器中的控制台是否报告错误?调试器还允许您跟踪浏览器发出的请求。这表明你的要求了吗

有几点与您的问题无关:

对学校要非常小心。尽管它的名字与W3C无关,但它的质量往往很差。 您不使用jQuery之类的AJAX框架有什么特殊原因吗?如果您想了解AJAX的基本原理,不使用框架是很好的,但是框架确实简化了一切。 您正在执行一个同步请求,这是您永远不应该执行的。同步请求会阻止浏览器,使其对用户无响应。 你需要非常小心使用document.write。它只在页面加载期间有效,因为您正在执行同步请求。在其他情况下,您可以轻松地用它覆盖页面。 编辑:

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

您所做的通常被称为异步JavaScript和XML,除非您不是异步进行的,您不应该这样做。看一看Mozilla开发者网络的简短教程,了解如何正确操作:


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

这不是一个真正的答案,而是一个评论,但是我想提出几点,这在回答中更容易

您是在Firefox浏览器FireBug扩展中使用调试器,还是在Chrome或IE中内置调试器?调试器中的控制台是否报告错误?调试器还允许您跟踪浏览器发出的请求。这表明你的要求了吗

有几点与您的问题无关:

对学校要非常小心。尽管它的名字与W3C无关,但它的质量往往很差。 您不使用jQuery之类的AJAX框架有什么特殊原因吗?如果您想了解AJAX的基本原理,不使用框架是很好的,但是框架确实简化了一切。 您正在执行一个同步请求,这是您永远不应该执行的。同步请求会阻止浏览器,使其对用户无响应。 你需要非常小心使用document.write。它只在页面加载期间有效,因为您正在执行同步请求。在其他情况下,您可以轻松地用它覆盖页面。 编辑:

问题很可能是@bazmegakapa所建议的:XMLHttpRequest通常只在web服务器上工作。您需要做的是在您的开发计算机上本地安装一个web服务器,并使用它进行测试。这通常很简单。即使是快速安装和运行,配置也很少。或者是一个带有Apache的软件包,包括一个名为MySQL和PHP的DB服务器,这些软件包通常是专门为本地网页开发和测试而设计的,甚至可以很容易地安装 呃。最后,例如,许多web开发IDE都内置了一个简单的web服务器

您所做的通常被称为异步JavaScript和XML,除非您不是异步进行的,您不应该这样做。看一看Mozilla开发者网络的简短教程,了解如何正确操作:



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

好的,请参见1。我同意,而且我知道w3c不是w3c,尽管它还没有让我失望。我主要用它作为参考。ups…不要按回车键。无论如何第二,AJAX?我只是想从XML中获取数据并将其转换成HTML。。。我对Ajax或JQuery一无所知。第三,你能提出更好的解决方案吗?首先尝试xml。@Ravenshade不使用w3schools作为参考。您可能只是没有意识到它让您失望:。使用MDN。Ajax最初只是通过Javascript异步获取XML数据,所以基本上就是您正在做的事情。您是否在本地计算机上使用这些代码,而不是通过Web服务器?有些浏览器不允许在本地文件上使用xmlhttprequest。---谢谢。这可能是问题所在,但在上传到任何地方之前,我确实需要对此进行测试。关于xmlhttprequest还有其他解决方案吗?至于使用w3schools作为参考,我确实觉得提醒自己很方便,但实际上我个人并没有发现任何比这更彻底或更广泛的方法,尽管我目前正在查看该列表。@Ravenshade如果您有冲突的信息,请打开一个新的问题。我相信这里会有人来解决的。我同意,而且我知道w3c不是w3c,尽管它还没有让我失望。我主要用它作为参考。ups…不要按回车键。无论如何第二,AJAX?我只是想从XML中获取数据并将其转换成HTML。。。我对Ajax或JQuery一无所知。第三,你能提出更好的解决方案吗?首先尝试xml。@Ravenshade不使用w3schools作为参考。您可能只是没有意识到它让您失望:。使用MDN。Ajax最初只是通过Javascript异步获取XML数据,所以基本上就是您正在做的事情。您是否在本地计算机上使用这些代码,而不是通过Web服务器?有些浏览器不允许在本地文件上使用xmlhttprequest。---谢谢。这可能是问题所在,但在上传到任何地方之前,我确实需要对此进行测试。关于xmlhttprequest还有其他解决方案吗?至于使用w3schools作为参考,我确实觉得提醒自己很方便,但实际上我个人并没有发现任何比这更彻底或更广泛的方法,尽管我目前正在查看该列表。@Ravenshade如果您有冲突的信息,请打开一个新的问题。我肯定这里有人可以整理它。所有文件都在同一个目录…我怀疑这样的事情:这个例子是用jQuery Ajax,但它也与XMLHutpRestQuery一起工作。你可以考虑使用jQuery,因为它简化了从服务器获取文件/数据的各个方面。这是一个很好的出发点。它确实需要您加载一个额外的库,但它封装了XMLHttp请求,这样您就不必担心哪个浏览器可以使用哪个对象以及错误状态等等。您可以告诉api要点击哪个url、要发送什么数据(如果有的话)、要返回什么、请求成功完成时要做什么,以及出现错误时要做什么。主要是因为需要学习和一点附加软件…你知道他们说的,太多的厨师会弄糟汤。但是所有的文件都在同一个目录中…我怀疑这样的事情:这个例子是用jQuery Ajax进行的,但是它也与XMLHypRestQuery一起工作。你可以考虑使用jQuery,因为它简化了从服务器获取文件/数据的各个方面。这是一个很好的出发点。它确实需要您加载一个额外的库,但它封装了XMLHttp请求,这样您就不必担心哪个浏览器可以使用哪个对象以及错误状态等等。您可以告诉api要点击哪个url、要发送什么数据(如果有的话)、要返回什么、请求成功完成时要做什么,以及出现错误时要做什么。主要是因为需要学习和一点附加软件…你知道他们说的,太多的厨师会弄糟汤。但这一点是正确的。
<!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>