1

我有一些这样的代码:

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 的“检查元素”窗口(我不知道它的确切名称)后,我可以看到 IE9 尝试将响应呈现为简单的文本节点,例如:

Option 1Option 2

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

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

TIA,安德烈

4

3 回答 3

3

只要我记得,这就是一个 IE 错误:http: //support.microsoft.com/kb/276228

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

mySelect.innerHTML = r;
//change to
$(mySelect).html(r);
于 2012-06-22T17:06:03.013 回答
2

尝试使用

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

似乎 IE 没有评估您的 HTML,jQuery 应该为您解决这个问题。

于 2012-06-22T17:07:00.427 回答
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>
于 2012-06-22T17:17:39.420 回答