我有一些像这样的代码:
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é
答案 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>