2011-07-04 5 views
0

私のajaxリクエストが遅い接続で長い時間がかかる場合は、キャンセルしたいと思います。ボタンのクリックイベントによる現在のAjaxリクエストの取り消し!

.ajaxStart()の場合はオーバーレイが表示され、5秒以上かかる場合(iはsetIntervalで管理)、現在のajaxリクエストをキャンセルするボタンがオーバーレイに表示されます。

HERESに私のコードの一部:

jqXHR = $.ajax({ 
    url: 'includes/inc_ajax.php', 
    type: 'POST', 
    data: '&ajax=1&action=7', 
    success: function (txt) { 
     var cntr = $.parseJSON(txt); 
     $("#onlineppl").html(cntr.online); 
     $("#todayppl").html(cntr.bugun); 
     $("#totalppl").html(cntr.toplam); 
    } 
}); 

$("#abortAjax").button({ icons: {secondary: "ui-icon-cancel"} }).click(function() { 
    $(jqXHR).abort(); 
}); 

私はそれを中止する変数に$.ajax()機能を割り当てる必要がありますか?私はあまりにもアヤックスによって呼び出された多くのアヤックスリクエストを持っているので、私はブラウザが動作しないアボートメソッドを引き起こす同じvar名を追跡することはできないと思います。

これは私の最初の質問です。私はちょっと混乱しています。どんな助けもありがたい。ありがとう。

答えて

1

さて、あなたがしようculd:

jqXHR.abort(); 

Whitout $()

見つからそのテストされていません、私はどこか

それを見たEDIT

アーッそれ:

Stop all active ajax requests in jQuery

0

はい、JavaScriptはプロトタイプベースの言語であり、すべてのオブジェクトインスタンスにポインタがあります。 2つのajax呼び出しが開始されると、jqXHRは2番目のajax呼び出しへのポインタのみを返します。これは、thisの記事にも示されています。この記事では、関数からトークンを戻す必要があるため、後で取り消すために参照することができます。

+0

このリンクは404です。 –

0

注 - 受信したAJAXリクエストは、サーバー上での処理から実際には停止できません。ブラウザは応答をリッスンしなくても、サーバーはリクエストの処理を続行します。手動で何かを実装することを除いて(別のページによって設定されたセッションプロパティチェックのように)進行中のリクエストを処理してWebサーバーをそのトラックに停止させる信頼できる方法はありません。

したがって、基本的にサーバーは実行されますが、クライアントブラウザは応答を無視します。これは、ドメインへの接続の制限(通常はデフォルトで2つだけです)でもカウントされることに注意してください。

関連する問題