我认为你可以在post上设置并在jquery超时中获取方法但是我想知道jquery是否有像ajax start和stop这样的全局时间。
就像我想设置它,如果说一个帖子或获取或某种类型的ajax请求正在运行,它运行超过X秒秒。那个性质的弹出窗口出现了“服务器很慢而且请求超时”并且杀死了这个请求。
然后用户可以再试一次或做其他事情。
jquery有这样的东西吗?
由于
答案 0 :(得分:4)
jQuery.ajax函数就是你想要的。它使您可以访问用于进行AJAX调用的大量选项。
具体来说,您打算拨打类似于
的电话$.ajax({'complete': callbackFunction, 'url': 'foo/bar/', 'timeout': 5000, 'error': errorCallback});
您感兴趣的两个选项是timeout
和error
。该函数的整个文档是here。这比使用更标准的get
/ post
函数要多一些,但要灵活得多。
error
函数与您在任何jQuery AJAX请求中使用的标准回调非常相似。如果请求成功则调用回调函数,则在失败时调用错误函数(例如404错误或命中超时)。您将使用错误功能向用户显示其请求已超时的消息。关于函数参数的完整文档(实际上,您可能不需要使用)可以在$ .ajax文档页面(之前链接)上找到。
或者,您可以使用jQuery.ajaxSetup函数在每个AJAX调用上全局设置timout。它的参数与jQuery.ajax函数完全相同,所以你可以这样做:
$.ajaxSetup({'timeout': 5000, 'error': errorCallback});
好处是你可以继续使用jQuery.get
/ jQuery.post
,但缺点是你必须做额外的工作才能在没有超时的情况下进行AJAX调用。 / p>
答案 1 :(得分:2)
是的,jQuery有一个'timeout'属性(以毫秒为单位),你发送$ .ajax()事件:
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
}
}
);