我有一段代碼,下面顯示2個下拉菜單,一個用於建築物和其他房間。當用戶從下拉菜單中選擇建築物時,它將使用ajax導航到room.php,在該腳本中編譯查詢並輸出房間列表,然後在房間下拉菜單中顯示該房間列表頁面:一段jQuery代碼不能在Internet Explorer中工作
$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之外的所有瀏覽器。感謝一些偉大的建議,所以我被告知要驗證腳本,因爲在驗證代碼時,Internet Explorer非常嚴格。
在我的驗證反正我知道我有這樣的錯誤:
document type does not allow element "option" here :
指着下面這一行:
jQuery('#roomsDrop').html('<option value="">Please Select</option>');
它指出,它需要去一個<select>
標籤,該標籤我在技術上努力在上面的代碼中做。我的問題是,如何修復代碼以通過驗證,但是能夠執行它所做的功能,即在從建築物下拉菜單中選擇建築物後顯示房間列表下拉菜單中的房間列表?
下面是應用程序,請在Internet Explorer中打開應用程序,也可以在Chrome,Firefox,Opera或safrai中打開應用程序。先在其中一個非Internet Explorer瀏覽器中將應用程序文本化,以查看該應用程序的工作方式,然後在Internet Explorer中對其進行測試,然後您可以看到自己的問題以及我試圖實現的目標。
Application (Please open in Internet Explorer and in one other major browser)
UPDATE:
<!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>
定義在IE中不起作用? –
除了告訴我們它是如何失敗的,請顯示html和ajax響應的主體。 – GreyBeardedGeek
檢查在瀏覽器控制檯收到的實際響應數據...是否有任何垃圾被添加到它?所有版本的IE都會出現問題嗎? IE會拋出任何腳本錯誤?也嘗試提醒數據在成功回調,看看它是否正在發射...如果不添加一些Ajax錯誤處理,並找出具體的Ajax錯誤是 – charlietfl