使用jquery超时Ajax请求?

时间:2009-10-09 06:03:00

标签: c# .net jquery asp.net-mvc ajax

我认为你可以在post上设置并在jquery超时中获取方法但是我想知道jquery是否有像ajax start和stop这样的全局时间。

就像我想设置它,如果说一个帖子或获取或某种类型的ajax请求正在运行,它运行超过X秒秒。那个性质的弹出窗口出现了“服务器很慢而且请求超时”并且杀死了这个请求。

然后用户可以再试一次或做其他事情。

jquery有这样的东西吗?

由于

2 个答案:

答案 0 :(得分:4)

jQuery.ajax函数就是你想要的。它使您可以访问用于进行AJAX调用的大量选项。

具体来说,您打算拨打类似于

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

您感兴趣的两个选项是timeouterror。该函数的整个文档是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
            }
        }
);