用jquery超时Ajax请求?

问题描述:

我认为你可以在后期设置,并在jQuery超时获取方法,但我想知道jQuery是否有一个像ajax开始和停止一样的全局时间。用jquery超时Ajax请求?

就像我想设置它,如果说一个帖子或获取或某种ajax请求正在运行,它运行更多的时间X秒。弹出窗口或其他类似的内容会显示“服务器速度很慢并且请求已超时”并杀死该请求。

然后,用户可以再次尝试或执行其他操作。

jquery是否有类似的东西?

感谢

的jQuery.ajax功能你想要什么。它使您能够访问用于进行AJAX调用的大量选项。

具体来说,你会想做出类似调用

$.ajax({'complete': callbackFunction, 'url': 'foo/bar/', 'timeout': 5000, 'error': errorCallback}); 

你感兴趣的两个选项是timeouterror。该函数的整个文档是here。这比使用更标准的功能要多一点,但更灵活。

error函数与您在任何jQuery AJAX请求中使用的标准回调函数非常相似。如果请求成功,则调用回调函数,但错误函数在失败时会被调用(例如404错误或超时命中)。您将使用错误功能向用户显示他们的请求已超时的消息。有关函数参数的完整文档(实际上,您可能不需要使用它)可以在$ .ajax文档页面(前面链接)中找到。

或者,您可以通过使用jQuery.ajaxSetup函数在每个AJAX调用中全局设置timout。它的参数是完全一样的jQuery.ajax功能,所以你会做这样的事情:

$.ajaxSetup({'timeout': 5000, 'error': errorCallback});

的好处是,你可以继续使用jQuery.get/jQuery.post,但缺点是,你必须做额外的工作,使AJAX调用没有超时。

+0

很酷我觉得现在ajaxSetup是我想要的,否则我得重写所有我的帖子。如果它成为问题,那么我可以转换。如果您在ajaxSetup中设置了超时并且在$ .ajax中设置了一个超时,会发生什么情况?哪一个会赢? 也像我有一个6MB连接和几乎所有我的阿贾克斯请求需要约500毫秒或更少的不同连接如何做。但是56K调制解调器怎么样?什么是安全超时10秒?此外,我仍然不清楚“错误”究竟如何。 – chobo2 2009-10-09 23:03:37

+0

如果您在$ .ajaxSetup中使用超时,那么是的,您可以使用$ .ajax使用不同的值。 我真的不能说什么合理的响应时间将是不同的速度与任何权威,但10秒似乎是一个很好的数额。 我已经阐明了答案中错误函数的用法。 – ShZ 2009-10-10 02:25:28

没错,jQuery有一个 '超时' 属性(以毫秒为单位),您发送的$。阿贾克斯()事件:

http://www.bennadel.com/blog/1500-Catching-Timeout-Errors-With-jQuery-Powered-AJAX.htm

$.ajax(
     { 
      method: "get", 
      url: "yourpage.php", 
      dataType: "json", 
      timeout: (3 * 1000), // 3 seconds 

      success: function(){ 
       //success code here 
      }, 

      error: function(request, strError){ 
       //error code here 
      } 
     } 
);