0

我有一些很好用的ajax 代码。单击按钮后,它doAjax每 2 秒调用一次该函数,直到它收到来自服务器的消息(成功为 text 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

尝试在 ajaxSetup 方法中设置:

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

只是一个疯狂的猜测,首先尝试从您的 ajax 调用中删除递归,然后查看您的超时是否按要求工作。

另外,为什么你的函数调用中有你的函数定义?您应该在外部定义函数,即单击调用,然后从内部调用它。

于 2012-11-07T20:01:13.640 回答