jQuery ajax超时功能?

时间:2013-02-26 02:21:37

标签: jquery

我使用ajax发出GET请求,并期望返回一个JSON值。

但是,我的主机安装了防火墙。它每秒只需要2个请求,否则会阻止连接并显示错误页面。 (空白页面。)因此,如果我在一秒内发出3个请求,则第三个请求永远不会检索JSON响应。因此,loading.gif一直在转动和转动。

如何在jQuery中超时,比方说5秒,所以它会回调超时功能?

2 个答案:

答案 0 :(得分:1)

试试这个:

$.ajax({
    url: YourUrl,
    async: true,
    timeout: 5000,       //5 seconds
    success: function(args) { 

                     // on success code
    }
})

答案 1 :(得分:0)

您可以使用超时功能创建自定义GET请求作为参数:

$.getWithTimeOut = function(url, params, datatype, onsuccessfunction, aftertimeoutfunction, timeout){
     $.get(url, params, function(data) {
          onsuccessfunction(data);
          setTimeout(aftertimeoutfunction, timeout);
     }, datatype);
};

然后你打电话:

$.getWithTimeOut('url/url', { param1: value1 }, 'json', function(data){
     //success code here
}, function(/*params*/){
   //timeout code here
}, 5000);