【问题标题】:Converting a PHP script into a JavaScript script which reads and prints XML data将 PHP 脚本转换为读取和打印 XML 数据的 JavaScript 脚本
【发布时间】:2026-02-01 12:50:01
【问题描述】:

我正在尝试用 JS(Node 和 ajax(以及 jQuery 库))替换我的所有 PHP,但是在将以下 PHP 脚本转换为 ajax 引擎时遇到了问题。

    <?php
    $xmlDoc=new DOMDocument();
    $xmlDoc->load("Administration/data/people.xml");

    $xx=$xmlDoc->getElementsByTagName('person');

    $hintt="";
    for($ii=0; $ii<($xx->length); $ii++)
      {
      $yy=$xx->item($ii)->getElementsByTagName('id');
      $zz=$xx->item($ii)->getElementsByTagName('fullName');
      if ($yy->item(0)->nodeType==1)
        {

            echo "<button type='button' class='mybutton' name='users'>" .
            $zz->item(0)->childNodes->item(0)->nodeValue . "</button>";

        }
      }

    ?>

这是我的 ajax 尝试:

        <div id="loadMe">
            <h1>Reading..</h1>
        </div>

        <script>
                $.ajax({
                    type: "GET",
                    url: "Administration/data/people.xml",
                    dataType: "xml",
                    success: function(xml) {
                        $(xml).find('person').each(function(){
                            var fullName = $(this).attr('fullName');
                            $("<button type=button class=mybutton value='+fullName+'></button>").html("<h3>'+fullName+'</h3>").appendTo('#loadMe');
                        });
                    }
                });
        </script>

对我来说,它看起来很相似,但是 JS 不工作。任何人都看到不一致或可以告诉我为什么我的 XML 元素没有附加到指定的 div 标记?非常感谢各位朋友!

编辑(14 年 1 月 24 日凌晨 1 点 24 分): 我认为提供我的 XML 会有所帮助,也许我引用的数据有误?

<people>
  <person>
    <id>10</id>
    <fullName>Philadelphia Collins</fullName>
    <firstName>Philadelphia</firstName>
    <lastName>Collins</lastName>
    <age>62</age>
    <hometown>Sunnyvale</hometown>
    <job>Restraunt Owner</job>
  </person>
<people>

【问题讨论】:

  • 你应该使用.done().fail() 而不仅仅是success:
  • $('&lt;button type='button' 开头的行需要在字符串中使用双引号。您应该在浏览器的控制台中看到有关此问题的错误。
  • 我都使用了,但这不是问题的原因。 @Blazemonger 你有没有看到任何逻辑错误?
  • 另外,您的&lt;script&gt; 应移至页面底部或包含在$(document).ready 调用中。
  • 这个脚本是在 jquery 加载之后运行的,对吗?这可能是问题所在;你的 devtools/javascript 控制台说什么?

标签: javascript php jquery ajax xml


【解决方案1】:

我已经设置了一个test page,如果您需要进行更多探索,您可以随时尝试使用它。那么解决方案来了。

首先,我尝试执行 AJAX 请求,但由于 XML 无效,该请求总是返回失败。如果我只是尝试访问 XML,它说它无效并且无法显示。问题是关闭的&lt;people&gt; 标记缺少/。它应该是&lt;/people&gt;'. So that fixed the AJAX request failing. The next part was parsing the XML response. I did this by using the.children()method in jQuery and then getting the text of the element with.text()`。它最终看起来像这样:

var fullName = $(this).children('fullName').text();

因此,尽管我可能遗漏了所有这些内容,但可以在测试页面上找到,我希望您能解决您的问题并获得成功的 AJAX 请求。如果我遗漏了什么或者我不清楚,请告诉我,我会尽力解释一下。

顺便说一句,在 Chrome DevTools 中执行 console.log(); 并使用断点自己访问数据总是可以帮助我了解我正在处理的内容,这样我就知道如何从请求中获取我想要的数据。

祝你好运!

【讨论】: