使用jquery .ajax设置超时

时间:2012-11-07 19:44:40

标签: jquery

我有一些非常好的ajax代码。按下按钮后,它每隔2秒调用doAjax函数,直到它收到来自服务器的消息(成功为文本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秒后看到超时。我尝试删除递归但仍然有同样的问题。我做错了什么?

2 个答案:

答案 0 :(得分:0)

尝试在ajaxSetup方法中设置:

$.ajaxSetup({
     timeout: 10000,
})

答案 1 :(得分:0)

只是猜测,首先尝试从ajax调用中删除递归,然后查看超时是否按预期工作。

另外,为什么在函数调用中有函数定义?您应该在外部定义您的功能,点击通话,然后从内部调用它。