【发布时间】:2011-05-07 21:18:10
【问题描述】:
我已成功创建了一些级联下拉列表,但我似乎无法检索这些值。下拉列表完全是在另一个页面上创建的,我不知道为什么,但我只是假设它也会从列表中提取选择名称和选择的值。当我 print_r($_REQUEST) 时,二级和三级下拉菜单中根本没有任何信息。
第一页只是一个普通的形式,像这样:
<center><div id="country"><b>Country</b></div></center>
</td><td><center><div id="province"><b>Province</b></div></center>
</td><td>
这是 JavaScript
function showRecords(str,column,nextDiv)
{
if (str=="")
{
document.getElementById(nextDiv).innerHTML="";
return;
}
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById(nextDiv).innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","getRecords.php?"+column+"="+str,true);
xmlhttp.send();
}
这是它从中提取下拉菜单的页面
<?
require "functions.php";
if(isset($_REQUEST['region'])){
$region=$_REQUEST['region'];
getDepRecords("country","regions","region",$region,"province");
}
if(isset($_REQUEST['country'])){
$country=$_REQUEST['country'];
getDepRecords("province","countries","country",$country,"");
}
?>
这是具体功能
function getDepRecords($column, $table, $depColumn, $dep, $nextDiv) {
echo "<select name =".$column." id=".$column."
onchange=\"showRecords(this.value,'".$column."','".$nextDiv."')\">\n";
$options = "";
if (isset($_REQUEST)) {
$selected = $_REQUEST[$column];
}
$query = "SELECT DISTINCT $column FROM $table WHERE
$depColumn = \"$dep\" ORDER BY $column ASC";
$result = mysql_query($query);
if (!$result) {
$options = "<option>Error Retrieving Records</option>\n";
}
else {
$options.= "<option value = ".NULL.">Select ".$column."</option>\n";
$options.= "<option value = ".NULL."></option>\n";
while ($row = mysql_fetch_assoc($result)) {
$value = $row[$column];
$options.= "<";
$options.= "option value=\"";
$options.= $value . "\"";
if (isset($selected)) {
if (($selected) == ($value)) {
$options.= " selected";
}
$options.= "";
}
$options.= ">";
$options.= $value;
$options.= "</option>\n";
}
}
echo $options;
echo "</select>";
}
【问题讨论】:
-
如果你能分享你的问题代码会很有帮助
-
它所有的选项都显示得很好,但它只是没有从页面上读取用户的选择,这是代码的第一部分。
-
我想我似乎无法在其他页面上设置下拉列表的名称。 ?
-
它是什么“其他页面”?如果是链接问题,需要知道涉及哪些文件。对于您可以绘制它的方式,请参阅这个问题:stackoverflow.com/questions/5806703/…
-
离题,但我建议使用
<?php而不是不推荐使用的缩写<?。
标签: php javascript mysql ajax