0

私はかなり単純なデモアプリに取り組んでいます。3 つの入力ドロップダウン ボックスがslideDown()連続して使用されて表示され (これchange()は前のドロップダウンで発生します)、1 つが AJAX 要求を使用して次の値を決定します。

これは Chrome と Firefox では問題なく動作しますが、IE (9 でも) は 2 番目のドロップダウン (AJAX 要求を実行するドロップダウン) でチョークします。

コードは言葉よりも雄弁なので:

$('#specialty').change(function() {
    if ( $(this).val() !== "(please select an option)" ) {
        $.ajax({
                type: "GET",
                url: "getValidToppings.php",
                data: { location: $(this).parent().prev().children('select').val() }
        }).done(function(data) {
            var mytoppings, toppingsSelectBox;

            console.log('return values: ' + data);

            data = $.parseJSON(data);

            toppingsSelectBox = $('#toppings');
            toppingsSelectBox.empty();

            // we use the value from the select box as a key in the dict of toppings returned
            // from the AJAX call
            mytoppings = data[$('#specialty').val()];

            toppingsSelectBox.append('<option>(please select an option)</option>')

            for (i in mytoppings) {
                toppingsSelectBox.append("<option>"+mytoppings[i]+"</option>");
            }

            toppingsSelectBox.parent().slideDown('slow', 'linear');
        });
    }
});

このドロップダウン ( where id="specialty") を変更すると、AJAX を介して (JSON で) 返された値が.toppings入力を満たし、それを ( でslideDown()) 明らかにするはずであることがわかります。しかし、IE では...サイコロはありません。

本当に奇妙なのは、IE の開発ツールを起動して Javascript をいじり始めると (ブレークポイントの設定、コンソールの使用など)、期待どおりに動作し始めることです。開発ツールを開くだけでも、そのウィンドウが開くとすぐに機能し始めます。一体何?

ここで奇妙なことが起こっています。何か案は?

4

1 に答える 1

2

IE doesn't know what "console" is, except when you have the dev tools open. Take out the console.log and you should be good. Also make sure you aren't missing any semicolons, IE tends to not like that.

于 2012-06-12T20:34:34.883 に答える