下拉列表只从xml文件中获取两个值

时间:2013-03-14 12:03:56

标签: php javascript xml ajax

我正在尝试使用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>

先谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

您正在检索xmldata为

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

不应该是

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

由于信息未包含在包装元素中。