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

どのブラウザでも、また Internet Explorer で唯一有効な作業は、html 化された文字列だけでなく、DOM を使用することです。このようなもの:

コード:

<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 に答える
2

使ってみて

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

IE が HTML を評価していないようです。jQuery がその問題を処理する必要があります。

于 2012-06-22T17:07:00.427 に答える