2012-11-07 120 views
0

我有一些AJAX代码,伟大的工程。点击按钮后,它每2秒调用一次doAjax函数,直到它收到来自服务器的消息(成功为文本Initializing...please wait)。设置超时与jquery .ajax

我想添加的是在服务器关闭或其他情况下的超时。所以我增加了超时和错误功能:

$(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秒后发生超时。我试图删除递归,但仍然有同样的问题。我究竟做错了什么?

回答

0

只是胡乱猜测,尝试首先从Ajax调用删除递归,看看你超时工作的要求。

另外,为什么你的函数定义在你的函数调用中?你应该在外面定义你的功能,点击呼叫,然后从内部调用它。

+0

一个非常合理的问题。除了某些原因,除非doAjax函数在click处理程序中,否则我无法获得任何工作。我尝试删除递归,但它不会改变任何东西。 – Tom

+0

再次嗨。你的功能应该在点击通话之外工作。我已经做了一百万次,不应该成为一个问题。解决这个问题。现在,为了超时,试着看看回调是否是这样的,用这样的代码:error:function(){alert(“error”)}' – Greeso

+0

增加了警报,它似乎没有得到错误功能 – Tom

0

尝试ajaxSetup方法设置此:

$.ajaxSetup({ 
    timeout: 10000, 
}) 
+0

那也没有工作 – Tom