2013-02-26 80 views
1

我用ajax做了一个GET请求,期望返回一个JSON值。jQuery ajax超时函数?

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

我怎么可以让jQuery的超时,比方说5秒,所以它会回调超时功能?

+1

'$阿贾克斯'接受'timeout'选项。然后,您可以在错误处理程序中测试错误原因(例如超时)。请查看文档:http://api.jquery.com/jQuery.ajax/。 – 2013-02-26 02:24:23

回答

1

试试这个:

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

        // on success code 
    } 
}) 
+0

超时后会起什么作用?绝对不会成功:。 – 2013-02-26 02:32:20

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);