我在下面有这个代码,它可以通过使用ajax从另一个页面检索模块来在下拉菜单中显示模块列表:
以下代码
$(document).ready( function(){
jQuery.ajax({
type: "post",
url: "module.php",
success: function(response){
jQuery('#modulesDrop').append(response);
}
});
});
...
<?php
$moduleHTML = "";
$moduleHTML .= '<select name="modules" id="modulesDrop">'.PHP_EOL;
$moduleHTML .= '<option value="">Please Select</option>'.PHP_EOL;
$moduleHTML .= '</select>';
?>
module.php页面:
<?php
// connect to the database
include('connect.php');
/* check connection */
if (mysqli_connect_error()) {
printf("Connect failed: %s\n", mysqli_connect_error());
die();
}
$moduleactive = 1;
$sql = "SELECT ModuleId, ModuleNo, ModuleName FROM Module WHERE ModuleActive = ? ORDER BY ModuleNo";
$sqlstmt=$mysqli->prepare($sql);
$sqlstmt->bind_param("i", $moduleactive);
$sqlstmt->execute();
$sqlstmt->bind_result($dbModuleId,$dbModuleNo,$dbModuleName);
$moduleHTML = "";
while($sqlstmt->fetch()) {
$moduleHTML .= sprintf('<option value="%1$s_%2$s_%3$s">%1$s - %2$s</option>'.PHP_EOL, $dbModuleNo, $dbModuleName, $dbModuleId);
}
echo $moduleHTML;
$sqlstmt->execute();
?>
我不明白的是,下拉菜单设法在所有主要浏览器中显示模块列表,但Internet Explorer除外,它仍显示“请选择”选项。为什么下拉菜单无法在Internet Explorer中显示列表?
更新
我要废弃ajax方法,只需将主要php代码粘贴到原始脚本
中答案 0 :(得分:4)
你最好只在你自己的脚本中使用php来使用同一脚本中的php / mysqli使用相同的脚本检索模块
答案 1 :(得分:1)
试试这种方式
$(document).ready( function(){
jQuery.ajax({
type: "post",
url: "module.php",
success: function(response){
jQuery('#container').html(response);
}
});
});
...
<?php
$moduleHTML = "";
$moduleHTML .= '<div id="container">';
$moduleHTML .= '</div>';
?>
//In here some where make sure you are echoing <?php echo $moduleHTML; ?>
在你的module.php中更改
$moduleHTML = '<select name="modules" id="modulesDrop">';
$moduleHTML .= '<option value="">Please Select</option>'.PHP_EOL;
while($sqlstmt->fetch()) {
$moduleHTML .= sprintf('<option value="%1$s_%2$s_%3$s">%1$s - %2$s</option>'.PHP_EOL, $dbModuleNo, $dbModuleName, $dbModuleId);
}
$moduleHTML.='</select>';
答案 2 :(得分:0)
你应该选择html函数而不是像这样的jQuery('#modulesDrop')追加.html(response);