【问题标题】:'Getting' data from xml to input into html via javascript (Beginner)从 xml 中“获取”数据以通过 javascript 输入到 html(初学者)
【发布时间】: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


【解决方案1】:

(这不是一个真正的答案,而是一个评论,但是我有几点我想说明,这在答案中更容易)。

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

有几点与您的问题无关:

  • 使用 w3schools 时要非常小心。尽管它的名字与 W3C 无关,而且质量通常很差。
  • 您没有使用 jQuery 等 AJAX 框架的任何特殊原因? (如果您了解 AJAX 的基本工作原理,不使用它很好,但框架确实简化了一切)。
  • 您正在执行一个同步请求,这是您不应该执行的。同步请求会阻止浏览器,使其对用户无响应。
  • 您需要非常小心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

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

【讨论】:

  • 好的,首先 1. 我同意并且我知道 w3schools 不是 w3c,尽管它还没有让我失望。我主要用它作为参考。
  • ups...不要按回车键。反正。其次...AJAX?我只是想从 XML 中获取数据并将其放入 HTML...我对 Ajax 或 JQuery 一无所知。第三……您能提出更好的解决方案吗? (第一次尝试进入 xml)。
  • @Ravenshade 不要使用 w3schools 作为参考。您可能只是没有意识到它让您失望了:)。使用 MDN。 Ajax(最初)只不过是使用 Javascript 异步获取 XML 数据,所以基本上你在做什么。您是否在本地计算机上使用这些代码,而不是通过网络服务器?某些浏览器不允许在本地文件上使用xmlhttprequest。
  • -_- 谢谢你。这可能是问题,但是在我上传到任何地方之前我确实需要对此进行测试。关于 xmlhttprequest 的任何其他解决方案?至于使用 w3schools 作为参考,我确实觉得提醒自己很方便,但我实际上(个人)没有发现任何更好的彻底性或广泛性,尽管我目前正在查看该列表。
  • @Ravenshade 如果您有相互矛盾的信息,只需打开一个新问题。我相信这里有人可以解决它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-21
  • 1970-01-01
  • 2011-07-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多