4
var refreshId_hxlatestposts = setInterval(function() {
var el = $("#hxlatestposts");
var req = $.get("example.php");
el.fadeOut('slow', function () {
    req.done(function( data ){
        el.html(data).fadeIn('slow');
    });
});
}, 60000);

これは、div を毎分更新するために使用するものです。フィードを取得しているサイトがダウンしているか何かのときにハングアップすることがあります。X秒でphpファイルをロードできない場合は、「ロードに失敗しました」を返すようにタイムアウトを設定したいと思います。

4

4 に答える 4

2

遅延オブジェクトの適切な使用。

に置き換える$.get$.ajax、タイムアウトを追加できます。

var req = $.ajax({
    url: "example.php",
    type: "GET",
    timeout: 5000 // 5 seconds
});

次に、失敗ハンドラーを追加します

req.done(function(){...}).fail(function(){ 
    alert("failed to load"); 
});
于 2012-07-20T18:25:59.280 に答える
2

jQuery のドキュメント ( .ajaxSetup() )では、個々のリクエストで使用するのではなく.ajaxSetup()、 の値を設定するために使用することを提案しています。timeout

request.fail()リクエストが失敗した場合に関数を登録するために使用できます。

$.ajaxSetup({
    timeout: 5000
});

var refreshId_hxlatestposts = setInterval(function() {
    var el = $("#hxlatestposts");
    var req = $.get("example.php");
    el.fadeOut('slow', function() {
        req.done(function(data) {
            el.html(data).fadeIn('slow');
        });
        req.fail(function(jqXHR, textStatus) {
            el.html('Fail to load').fadeIn('slow');
        });
    });
}, 60000);
于 2012-07-20T18:32:00.050 に答える
1

着信応答のステータスをチェックして、サービスが 200 Ok ステータスを返したことを確認する必要があります。これは、タイムアウトを待つよりも信頼性が高くなります。完全な関数にタイムアウトを設定することで、データが適切かどうかを判断し、再試行するかどうかを判断できます。

   $.ajax({
    //...        
    success: function(data, textStatus, xhr) {
        console.log(xhr.status);
        //handle status codes etc.
        // then set your timeout

    },
    complete: function(xhr, textStatus) {
        console.log(xhr.status);
        //handle status codes etc.
         // then set your timeout

    },

    // OR

    fail: function( xhr, textStatus ){
        //retry code or timeout
    }

    });
于 2012-07-20T18:27:50.323 に答える
1

jQuery の $.get は、$.ajax の省略形にすぎません。これは、より柔軟性が必要な場合に使用されます (あなたの場合は、はい)。

次のように置き換えます$.get("example.php");

$.ajax({
  type: "GET",
  url: "example.php",
  timeout: X*1000,
}).done(function(data) { 
   el.fadeOut('slow', function () {
     el.html(data).fadeIn('slow');
  });
}, 60000);
});

X待機する秒数はどこですか(タイムアウト)

于 2012-07-20T18:27:58.963 に答える