我在这个问题上遇到了麻烦。 我只是尝试使用 jquery ajax 根据第一个下拉列表的选择填充第二个下拉列表。 它在所有其他浏览器中都运行良好,包括 Edge,但不是 IE 11。
这是 ajax 函数
function getProfiles(val) {
$.ajax({
cache: false,
type: 'POST',
url: 'ajaxDept.php?dept=' + val,
data: {
get_option:val
},
success: function (response) {
document.getElementById("comboprofile").innerHTML=response;
}
});
}
这是 ajaxDept.php 代码
<?php
include('/inc/config.inc.php');
$dbAjax = new Database();
$dbAjax->connect();
$dbAjax->selectDB('cad');
$dept = $_GET['dept'];
$queryAjax = $dbAjax->SelectQuery("SELECT * FROM profile WHERE department='".$dept."' ORDER BY profile_prefix ASC");
foreach($queryAjax as $line)
{
$prefix = $line['profile_prefix'];
$profile = $prefix."-".$line['profile_name'];
$department = $line['department'];
echo "<option value='".$prefix."'>".$profile."</option>";
}
?>
和 HTML 部分
<label class="description" for="comboDept">Department</label>
<div>
<select class="element select medium" id="comboDept" name="comboDept" onchange="getProfiles(this.value);">
<option value="" selected="selected"></option>
<?php echo $comboDept; ?>
</select>
</div>
</li>
<li id="li_13">
<label class="description" for="comboprofile">Profile</label>
<div>
<select class="element select medium" id="comboprofile" name="comboprofile">
</select>
</div>
</li>
我已经使用 IE 11 运行了调试器,并且得到了 200/OK
这是IE看到的请求URL,这是正确的
请求网址:http://php/CAD/new/ajaxDept.php?dept=IT
当我在IE中浏览到该网址并查看源代码时,它向我显示了带有<option>
标记的正确html代码。 它根本没有填充我的下拉菜单。
同样,在我尝试过的所有其他浏览器中运行良好,所以我不确定这实际上是一个jQuery/Ajax问题,或者IE如何处理HTML响应。 任何帮助将不胜感激。
根据
这篇文章,可能是因为这行:
document.getElementById("comboprofile").innerHTML=response;
既然你使用的是jQuery,你不妨继续使用它,将该行替换为:
$('#comboprofile').html(response);
谢谢Mikey,这就是修复方法。
$('#comboprofile').html(响应);
这是最后的工作功能
function getProfiles(val) {
$.ajax({
cache: false,
type: 'POST',
url: 'ajaxDept.php?dept=' + val,
data: {
get_option:val
},
success: function (response) {
$('#comboprofile').html(response);
}
});
}