jQuery AJAX无法填充Internet Explorer中的选择框

时间:2012-06-22 17:01:54

标签: jquery html ajax

我有一些像这样的代码:

var mySelect = document.getElementById("mySelect");
mySelect.innerHTML = "<option>Loading...</option>";
$.get("ajaxPage.php", {"args":args}, function(r) {
    mySelect.innerHTML = r;
});

ajax响应是这样的:

<option value="1">Option 1</option>
<option value="2">Option 2</option>

它适用于Chrome,Aurora / Firefox,Opera和Safari(我已经测试过每一个),但IE9拒绝接受回复。

在查看IE9的'Inspect Element'窗口(我不确切知道它的名字)之后,我可以看到IE9尝试将响应呈现为一个简单的文本节点,例如:

Option 1Option 2

为什么会发生这种情况是困扰我的。

我很抱歉,如果这已经在这里受到质疑,我做了一些搜索,看不到任何可以帮助我的答案。

TIA,André

3 个答案:

答案 0 :(得分:3)

只要我记得,这就是IE漏洞: http://support.microsoft.com/kb/276228

我认为JQuery等效修复了错误:

mySelect.innerHTML = r;
//change to
$(mySelect).html(r);

答案 1 :(得分:2)

尝试使用

$('#mySelect').html("<option>Loading...</option>");

似乎IE没有评估你的HTML,jQuery应该为你处理这个问题。

答案 2 :(得分:2)

任何浏览器的唯一好习惯,唯一使用Internet Explorer的是使用DOM,而不仅仅是html'ed字符串。像这样:

代码:

<script>
$('select#my_select')
    .append($( document.createElement('option') ).val('opt1').html('Option 1'))
    .append($( document.createElement('option') ).val('opt2').html('Option 2'));
</script>

<强>之前

<select id="my_select"></select>

<强>后

<select id="my_select">
    <option value="opt1">Option 1</option>
    <option value="opt2">Option 2</option>
<select>