我在下面有一段代码,它显示了 2 个下拉菜单,一个用于建筑物,另一个用于房间。当用户从下拉菜单中选择建筑物时,它将使用 ajax 导航到 room.php,在该脚本中它编译查询并输出房间列表,然后显示在房间下拉菜单中页:
$sql = "SELECT DISTINCT Building FROM Room";
$sqlstmt=$mysqli->prepare($sql);
$sqlstmt->execute();
$sqlstmt->bind_result($dbBuilding);
$buildings = array(); // easier if you don't use generic names for data
$buildingHTML = "";
$buildingHTML .= '<select name="buildings" id="buildingsDrop" onchange="getRooms();">'.PHP_EOL;
$buildingHTML .= '<option value="">Please Select</option>'.PHP_EOL;
while($sqlstmt->fetch())
{
$building = $dbBuilding;
$buildingHTML .= "<option value='".$building."'>" . $building . "</option>".PHP_EOL;
}
$buildingHTML .= '</select>';
$roomHTML = "";
$roomHTML .= '<select name="rooms" id="roomsDrop">'.PHP_EOL;
$roomHTML .= '<option value="">Please Select</option>'.PHP_EOL;
$roomHTML .= '</select>';
?>
<script type="text/javascript">
function getRooms() {
var building = jQuery("#buildingsDrop").val();
jQuery('#roomsDrop').empty();
jQuery('#roomsDrop').html('<option value="">Please Select</option>');
jQuery.ajax({
type: "post",
url: "room.php",
data: { building:building },
success: function(response){
jQuery('#roomsDrop').append(response);
}
});
}
</script>
现在上面的代码适用于除 Internet Explorer 之外的所有浏览器。感谢关于 SO 的一些很好的建议,我被告知要验证脚本,因为 Internet Explorer 在验证代码时非常严格。
无论如何,在我的验证中,我意识到我有这个错误:
文档类型在此处不允许元素“选项”:
指向下面的这一行:
jQuery('#roomsDrop').html('<option value="">Please Select</option>');
它声明它需要进入<select>
我在上面的代码中技术上尝试做的标签。我的问题是如何修复代码以通过验证但能够执行它的功能,即在从建筑物下拉菜单中选择建筑物后显示房间下拉菜单中的房间列表?
以下是应用程序,请在 Internet Explorer 以及 chrome、firefox、opera 或 safai 中打开应用程序。首先在其中一个非 Internet Explorer 浏览器中向应用程序发送文本,以查看该应用程序的工作原理,然后在 Internet Explorer 中对其进行测试,您可以自己查看问题以及我想要实现的目标。
应用程序(请在 Internet Explorer 和其他主要浏览器中打开)
更新:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Room </title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" type="text/css" href="roomStyle.css">
</head>
<body>
<?php
// connect to the database
include('connect.php');
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
die();
}
$building = isset($_POST['building']) ? $_POST['building'] : '';
$sql = "SELECT Room FROM Room WHERE Building = ?";
$sqlstmt=$mysqli->prepare($sql);
$sqlstmt->bind_param("s",$building);
$sqlstmt->execute();
$sqlstmt->bind_result($dbRoom);
$roomHTML = "";
while($sqlstmt->fetch()) {
$roomHTML .= "<option value='".$dbRoom."'>" . $dbRoom . "</option>".PHP_EOL;
}
echo $roomHTML;
$sqlstmt->execute();
?>
</body>
</html>