0

多くの場合、サーバー、外部API、HTTPリクエストなどに対してAJAX呼び出しを行うアプリを設計していることに気付きます。問題は、この非同期呼び出しが発生している間、ユーザーが同じAJAX呼び出しを行うアイテムをクリックできることです。または、アプリのフローを中断するなど。これを防ぐためにさまざまなハックを試しましたが、これを行うための最も受け入れられている方法は何でしょうか。

これをより具体的にするためにbutton、AJAX呼び出しを行うform要素と、アプリがAJAX呼び出しに使用するデータの一部を変更する要素があるとします。button'sAJAX呼び出しの処理中にボタンとフォームの関数が機能しないように設計するための最良の方法は何ですか?

4

2 に答える 2

1

目的を達成するための最良の方法は、関数を介してAJAX呼び出しを導き、要求がアクティブであるかどうかをその関数内で確認できるようにすることです。JQueryを使用していると仮定した例を次に示します。

active_ajax_call = false;

function get_ajax(url, senddata) {
    if(active_ajax_call == false) {
        active_ajax_call = true;
        $.ajax({
            type: "POST",
            url: url,
            data: senddata
        }).done(function (data) {
            active_ajax_call = false;
            console.log(data);
        });
    }
}

get_ajax("some_url", {name: "John", location: "Amsterdam"});

そしてもちろん、ウェブサイトのユーザーに素敵なajaxローダーか何かを提示して、データがプルされていることを知らせます。

于 2013-02-10T20:10:09.560 に答える
0

ボタンのハンドラーで、ボタンを(視覚的および機能的に)無効にしてから、AJAX呼び出しを実行します。AJAX呼び出しから戻って、ボタンを再度有効にします。

これは、主要なサイトがそれを行う方法です(例:PayPal)。

于 2013-02-10T19:46:05.840 に答える