【问题标题】:Dropdown getting only two value from xml file下拉列表仅从 xml 文件中获取两个值
【发布时间】:2013-03-14 12:03:56
【问题描述】:

我正在尝试使用 Ajax 将数据添加到名为 combo_assembly 的组合框中..

功能是:

function populate_combo_assembly(xmlindata) {
var xmldata = xmlindata.getElementsByTagName('Assemblies');
    if(xmldata.length <= 0) {
    alert("Data Unavailable");
        return;
    }
    window.document.getElementById('combo_assembly').options.length = 0;
    var firstOption = new Option('--Please select--', '', false, false);
    window.document.getElementById('combo_assembly').options.add(firstOption);
    for(var i =0; i <= xmldata.length; i++) {
        var typename = '';
        var x,y;
        x = xmlindata.getElementsByTagName('name')[i];
        y = x.childNodes[0];
        typename = y.nodeValue;
        var newOption = new Option(typename, typename, false, false);
        window.document.getElementById('combo_assembly').options.add(newOption);

    }

    window.document.getElementById('combo_assembly').disabled = false;  
}

并从文件中获取值..代码是:

<?php

include("database/dbconfig.inc.php");

header("Content-type: text/xml");
echo "<?xml version=\"1.0\" ?>\n";
echo "<Assemblies>\n";
$select = "SELECT * FROM assembly";
try {
    foreach($dbh->query($select) as $row) {
        echo "<Assembly>\n<name>".$row['name']."</name>\n<id>".$row['id']."</id>\n<category>".$row['category']."</category>\n</Assembly>\n";
    }
}
catch(PDOException $e) {
    echo $e->getMessage();
    die();
}
echo "</Assemblies>";
?>

问题是这个 xml 文件正在从数据库表中获取所有内容。但是该函数仅从 xml 代码中获取前两个值。 xml文件的输出

<Assemblies>
<Assembly>
<name>total</name>
<id>A00000</id>
<category>Brake</category>
</Assembly>
<Assembly>
<name>asd</name>
<id>A00001</id>
<category>Brake</category>
</Assembly>
<Assembly>
<name>ga</name>
<id>ga</id>
<category>Suspension</category>
</Assembly>
<Assembly>
<name>65</name>
<id>r00</id>
<category>Brake</category>
</Assembly>
<Assembly>
<name>yty</name>
<id>tyt</id>
<category>Suspension</category>
</Assembly>
<Assembly>
<name>Gaurav</name>
<id>Z0012</id>
<category>Brake</category>
</Assembly>
</Assemblies>

提前感谢您的帮助。

【问题讨论】:

  • 你能把第二页生成的 XML 贴出来吗?
  • 我已经用你想要的 xml 结果编辑了我的问题。

标签: php javascript xml ajax


【解决方案1】:

您正在检索 xmldata 为

var xmldata = xmlindata.getElementsByTagName('Assemblies');

不应该是这样的

var xmldata = xmlindata.getElementsByTagName('Assembly');

因为信息不包含在包装元素中。

【讨论】:

  • 据我所知..我认为我应该把主标签放在那里而不是子标签..对吗?。Assemblies 是整个 xml 的主要标签,而 assembly 是另一个标签在组件标签内
  • 哦,是的,您已经在 for 循环中获得了子节点(如果您通过请求“Assembly”而不是“Assemblies”来获得 xmldata,则不需要这样做)。
  • 哦...谢谢您..我会调查一下..但这不能解决我上面发布的问题吗?
  • 顺便说一下,你可能想看看XPath。它使导航 XML 结构的可读性大大提高。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-30
  • 2012-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-19
相关资源
最近更新 更多