2011-12-16 11 views
12

タイムアウト時間を$.get()に設定する方法はありますか?jQuery.get()でのタイムアウト

私は私のスクリプトは、ロードが(ビジーサーバーまたは何におそらく)いくつかの時間 はどこにでもそれを見つけることができないように取っているという警告を与えたいと...

+0

特定の遅延の後に関数をトリガしたい、または特定の遅延の後に '$ .get'リクエストをキャンセルしたいということですか?関数を起動するだけの場合は、 'setTimeout'を使うことができます。 – zzzzBov

答えて

23

だけ$.ajax(...)を使用します。

あなたがグローバルタイムアウトを適用するために .ajaxSetup(...)を使用することができ、コメントで以下に述べたようにまた
$.ajax({ 
    url: url, 
    success: function(data){ 
     //... 
    }, 
    timeout: 1000 //in milliseconds 
}); 

$.ajaxSetup({timeout:1000}); //in milliseconds 
+8

グローバルに実行したい場合は、次のようにします。$ .ajaxSetup({timeout:1000}); – epignosisx

+0

@epignosisxあまりにも。私はそれを答えに加えます。^_^ – Neal

+0

ベストタイムアウトは何ですか? 2000ms? – ISFO

2

コール$.ajaxを入力し、timeoutオプションを渡します。

+0

まで:-P(それだけです) – Neal

4

$.getは、timeoutオプションを持つ$.ajaxオプションのちょっと便利です。このオプションは、コールバックをキャンセルするまでのスクリプトの待機時間を指定します。

$.ajaxSetup({timeout: 9001})を使用してグローバルデフォルトを上書きすることができ、引き続き$.getを使用できます。

リクエストをキャンセルせずにユーザーに警告する場合は、$.ajaxを使用し、タイムアウトを設定し、completeコールバックでタイムアウトをキャンセルします。

は、ここではいくつかの例スターターコードですが、私はそれのいずれかをテストしていませんが、それはおそらく仕事のビットをプラグインに変えることができます

(function(){ 
    var t, delay; 
    delay = 1000; 
    $('.delay-message').ajaxStart(function() { 
    var $this; 
    $this = $(this); 
    t = setTimeout(function() { 
    $this.trigger('slowajax'); 
    }, delay); 
    }).ajaxComplete(function() { 
    if (t) { 
     clearTimeout(t); 
    } 
    }); 
}()); 

$('.delay-message').on('slowajax', function() { 
    $(this).show().delay(2000).fadeOut(1000); 
}); 
2

使用ajaxSetup

$.ajaxSetup({ 
timeout:2000 // in milliseconds 
}); 

//your get request here 
1

これには.ajax()を使用してください。結局のところ、.get()はこれを囲む単なるラッパーです。ここで

function doAjax() { 
    var $warning = $("#warning").hide(), // Always hide to start with 
     warningTimeoutId = 0; 

    warningTimeoutId = window.setTimeout(function() { 
     $warning.show(); 
    }, 10000); // wait 10s before showing warning 

    $.ajax({ 
     timeout: 30000, // 30s timeout 
     complete: function() { 
      // Prevent the warning message from appearing 
      window.clearTimeout(warningTimeoutId); 
     } 
     ... // other config 
    }); 
} 

は、あなただけのAjaxリクエストがすでに終了していない限り、10秒後に表示されますAjax呼び出しの前にタイムアウトを開始します。あなたのような何かを行うことができます。

関連する問題