我对此问题感到非常兴奋。我只是尝试使用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响应的问题。任何帮助将不胜感激。
答案 0 :(得分:1)
根据此post 可能是因为这一行:
document.getElementById("comboprofile").innerHTML=response;
由于您使用的是jQuery,因此您可以通过将该行替换为:
来继续使用它$('#comboprofile').html(response);
答案 1 :(得分:0)
谢谢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);
}
});
}