0

うまく機能するajaxコードがいくつかあります。ボタンをクリックするとdoAjax、サーバーからメッセージを受信するまで2秒ごとに関数が呼び出されます(成功はテキストですInitializing...please wait)。

追加したいのは、サーバーがダウンした場合などのタイムアウトです。そこで、タイムアウトとエラー関数を追加しました。

$(document).on("click", ".play", function() {
function doAjax(){
 $.ajax({
    url: 'index.php',
    success: function(data) {
        if (data == 'Initializing...please wait')
        {
            $('#quote p').html(data).css({'border': '1px solid', 'margin': '10px 0px'});
            setTimeout(doAjax, 2000);
        }
    },
    error: function(jqXHR, strError) {
        if(strError == 'timeout')
        {
          $('#quote p').html("Oops! Not found...").css({'border': '1px solid'});
        }
    },
    timeout: 8000
 });
}
doAjax();
});

コードは引き続き機能しますが、8秒後にタイムアウトが発生することはありません。再帰を削除しようとしましたが、それでも同じ問題が発生します。私は何が間違っているのですか?

4

2 に答える 2

0

ただの大げさな推測ですが、最初にajax呼び出しから再帰を削除してみて、タイムアウトが必要に応じて機能しているかどうかを確認してください。

また、なぜ関数呼び出し内に関数定義があるのですか?関数を外部で定義し、クリック時の呼び出しを行ってから、内部から呼び出す必要があります。

于 2012-11-07T20:01:13.640 に答える
0

ajaxSetupメソッドでこれを設定してみてください。

$.ajaxSetup({
     timeout: 10000,
})
于 2012-11-07T19:51:47.193 に答える