PHP填充下拉列表与ajax onchange问​​题IE Only

时间:2016-01-15 16:12:25

标签: javascript php jquery html ajax

我对此问题感到非常兴奋。我只是尝试使用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响应的问题。任何帮助将不胜感激。

2 个答案:

答案 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); 
     }

   });
}