0
$("#multiselect").hide();
$("#multiselect_container").append('<img id="loader" src="/loader.gif" />');

ブロック内の上記の2つの機能は$("#list").click()、FFではなくIEで何らかの理由でスキップされています、Chrome

$("#list").click(function() 
{           
    var selection = $(this).val();
    
    $("#multiselect").hide();
    $("#multiselect_container").append('<img id="loader" src="/loader.gif" />');

    $.ajax(
    {
        url: 'include/ajax.php?id='+selection,
        async: false,
        dataType: 'json',
        success: function (json) 
        {       
            $("#loader").remove();
            $("#multiselect").show();
                    
            //parse json
        } 
    });//json
});

どうしたの:

ボタン#listと、そのコンテナのサイズの選択ボックスであるコンテナ#multiselect_containerがあります。#multiselect

をクリックする#listと、選択ボックスが非表示になり、その下のコンテナがロードバーとともに表示されます。

ajax呼び出しが終了すると、読み込みバーが削除され、選択ボックスが再び表示されます。

Firefoxでは、これは完全に正常に機能します。IEではそうではありません。

私が試したこと:

  • $('#list').ajaxComplete(function() {});成功セクションで

  • phpファイルを3秒間スリープします。遅延があることを除いて、同じ結果。

  • ajaxブロックを削除すると、これら2つの呼び出しが正しく行われます。

  • キャッシングは問題ではなく、ajax呼び出しが行われています

4

1 に答える 1

1

async: falseに変更する必要がありますasync: true。これにより、ajax呼び出しが完了するまで表示が更新されないのasync: false正常な動作になります。そのため、その変更で修正するのに十分かもしれません。それ以外の場合は読んでください...

私は以前にIEで同様の問題を抱えていました。そこでは、Ajaxが非同期であるにもかかわらず、Ajaxの実行中に「読み込み中」タイプのメッセージを表示するように表示を更新したくありませんでした。関数自体がスキップされるのではなく、Ajaxの完全なコールバックが実行されるまで表示が更新されないだけです。完全な処理によって「読み込み中」のメッセージが削除されるため、ユーザーの視点からは存在しなかったかのようになります。見る。あなたのコードと同様に、私のプロジェクトはFirefoxで正常に機能しました。少し前のことですが、正しく覚えていれば、Ajax呼び出しに短いタイムアウトを導入することで、IEで機能するようになりました。

$("#list").click(function() 
{           
    var selection = $(this).val();

    $("#multiselect").hide();
    $("#multiselect_container").append('<img id="loader" src="/loader.gif" />');

    setTimeout(function() {
       $.ajax(
       {
           url: 'include/ajax.php?id='+selection,
           async: true,  // changed from false
           dataType: 'json',
           success: function (json) 
           {       
               $("#loader").remove();
               $("#multiselect").show();

               //parse json
           } 
       });//json
    }, 5);
});
于 2012-05-18T04:59:44.670 に答える