0

(すでに同様の回答済みの質問を見逃したかどうかはわかりません…)

ボタンをクリックすると、PHP/MySQL を介してデータベースからさまざまな画像を読み込み、それを本文に追加します (もちろん、実際の画像はデータベースに保存されません。画像の正しい選択は、投稿された変数に基づいています) )。

私の目標は、ボタンを押した後に読み込みインジケーターを表示し、すべての画像データが完全に読み込まれて表示された後にインジケーターを非表示にすることです。これはコールバックの問題を解決するのは簡単かもしれませんが、私は AJAX を使い始めたばかりです。:)

以下は、私が現在思いついたコードです。ここで load() 関数は本当に正しいものではないと思いますか?

ご協力いただきありがとうございます!

$("#somebutton").click(function(){
    alert("fetching…");
    $.post('loadmore.php', {
        somevariable: somevariable
    },
        function(data){
            $("body").append(data);
            $(window).load(function(){
            alert("finished loading…");
        });
    }); 
});
4

3 に答える 3

1

アラートで使用する関数finished loading...は成功のコールバックであるため、AJAX 呼び出しが終了すると実行されます。これは、を使用する必要がないことを意味します$(window).load

また、要素のメソッドを使用して、htmlその内容を変更し、メッセージを表示することもできます。

このようなものはうまくいきます:

$("#somebutton").click(function(){
    $('#divID').html('Loading...');
    $.post('loadmore.php', {
        somevariable: somevariable
    },
    function(data){
        $("body").append(data);
        $('#divID').html('');
    }); 
});
于 2013-07-19T00:32:21.057 に答える
1

ドキュメントを読むhttp://api.jquery.com/jQuery.ajax/

コールバックを使用しsuccessて本文を追加し、次にcompleteおよびerrorコールバックを使用して正しくクリアします。

$("#somebutton").click(function(){
    alert("fetching…");

    $.post('loadmore.php', {
        somevariable: somevariable
    })
    .success(function(data){$("body").append(data)})
    .error(function(){alert("oh dear")})
    .complete(function(){alert("finished loading…")});      
});

ローダーを削除するためのフォールバックを常に用意しておくことを忘れないでください - ローダーを持っているだけで、それをページから削除してアプリケーション/Web サイトを使い続ける方法がないことほど悪いことはありません。

于 2013-07-19T00:31:24.093 に答える