0

我正在创建一个使用 PHP 的网页,并尝试根据用户的选择加载 XML 文件。我查看了各种网站和论坛,看看我是否做错了什么,但即使我尝试复制代码,它似乎也不起作用。我得出的结论是,我需要一双全新的眼睛来注意到一些我可能没有注意到的东西。当我从下拉列表中选择一个项目时,我希望它加载选定的 XML 文件并显示其中的信息,但是使用代码我到目前为止什么都没有发生。我从下拉列表中选择一个选项,但没有任何反应。我认为这是加载 XML 文件的问题,因为当我更改 loadXML() 函数中的代码以输出所选选项时,它起作用了。我只是不知道为什么它不起作用。

<html>
<head>
<h1><u>State Information</u></h1>
</head>
<body>
<p><b>Please select an area of the US in the dropdown list below.</b></p>
<p><select name="area" onchange="loadXML(this.value)">

<?php
//set directory and open it
$xmldir = 'XML';
$dir = opendir($xmldir);

//create array and read through files in directory
$xmlfiles = array();
while ($file = readdir($dir))
{
//if the first char is not '.' then add to array
if (substr($file,-1,1) !== ".")
{
    $xmlfiles[] = $file;
} else
{
    //do nothing
}
}

echo '<option value="select">Select</option>';

foreach($xmlfiles as $area){ 
      echo '<option value="'.$area.'">'.$area.'</option>'; 
}
echo '</select>';

//close directory
closedir($dir);
?>

</p>
</body>
</html>

<script>
function loadXML($area) {
if (window.XMLHttpRequest)
{
    xhttp=new XMLHttpRequest();
}
else
{
    xhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xhttp.open("GET",$area,false);
xhttp.send();
xmlDoc = xhttp.responseXML;
x=xmlDoc.getElementsByTagName("name");

for (i=0;i<x.length;i++)
        {
    document.write(x[i].childNodes[0].nodeValue);
    document.write("
       ");
} 
}
</script>
4

1 回答 1

1

您的 xml 文件路径设置不正确,请尝试

echo '<option value="XML/'.$area.'">'.$area.'</option>'; 

此外,您还有一个多行字符串,这将导致语法错误,请更改

    document.write("
   ");

类似于

    document.write("\n");

在页面加载后使用document.write也会覆盖整个页面。

于 2012-12-19T18:15:11.493 回答