jQueryタブスクリプトを利用するダッシュボードUIがあります。各タブは、個別のAjaxリクエストを介してコンテンツをロードします。
これが私が抱えている問題です:
- ユーザーは複数のタブを次々に開きます
- 各タブが作成され、それぞれに対してAjaxリクエストが行われます。
- 作成される最後のタブは現在開いており、リクエストが完了すると、各タブのコンテンツがこのタブに表示されます
- ユーザーがいずれかのタブをクリックすると、コンテンツが適切に設定されます。
基本的に、ユーザーが最近のタブのAjaxリクエストが完了する前に新しいタブを開くと、ユーザーがいずれかのタブをクリックするまで、Ajaxがリクエストした両方のコンテンツが現在開いているタブに表示され、その後すべてが正常に表示されます。
ユーザーが別のタブを開くことを許可する前に、ajaxリクエストを完了して現在のタブにロードするように強制するため、問題を解決するAjax呼び出しを設定しようとしましたasync: false
が、ユーザーがダッシュボードを考えているという点でユーザーのフィードバックは否定的です凍結した(それが持っている)。
また、loading .gifを使用してタブをロードし、async: false
Ajaxリクエストを行うタイムアウト関数を設定しました。ユーザーからのフィードバックは同じですが、Ajaxリクエストが行われると、読み込み中のgifがアニメーションを停止するタイムアウト機能を使用しても同じです。
Ajaxリクエストは次のようになります。
$.ajax ({
url: report,
cache: false,
success: function(html) {
$("#loading").hide();
$("#tabcontent").append('<div id="c'+count+'" class="tabContentContainer">'+html+'</div>');
},
error: function(x, status, error) {
$.ajax ({
url: 'admin/error_notification.php',
type: "POST",
data:{
error: error
}
});
},
async:true
});