PHP 填充下拉列表与 ajax onchange 问题 IE 仅限


PHP Populate dropdown with ajax onchange issue IE Only

我在这个问题上遇到了麻烦。 我只是尝试使用 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); 
     }
   });
}