下拉菜单只从xml文件中获取两个值


Dropdown getting only two value from xml file

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

功能是:

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>

谢谢你的帮助。

您正在检索xmldata

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

应该是

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

由于信息不包含在包装器元素中