2012-03-03 59 views
0

我在使用ajax更新我的网页时遇到了一个小问题。当我在页面上停留一段时间(一个小时左右)时,它将停止加载,并且无法在浏览器中显示我的任何页面。我才开始有这个问题,因为我加入这个(简体)javascript来我的页面:Ajax调用打开太多连接?

var interval; 

interval = setInterval('UpdateComs()',5000); 


function FuncGo() { 

    $.post('data.php', { profile: pid }, function(data) { 

    $('.holder').html(data); 

    }); 

} 

由于我的服务器不下来,这不能成为问题,我在想,这可能是连接过多造成的?上面可以打开多个连接吗?
如果它确实应该以某种方式关闭它们?
对不起,所有的问题,但我不是太熟悉的任何帮助如何连接工作..感谢或想法

回答

0

我怀疑随机误差(连接落在后面,由于网络流量,可能是超时)停止setInterval。总是将一个annonomus函数(不是字符串)传递给setTimeout或setInterval,并且只在前一个函数完成后才调用下一个函数。

function UpdateComs() { 
$.ajax({ 
    type: "POST", 
    url: 'data.php' 
    data: {profile:pid}, 
    async: true, 
    cache: false, 
    timeout: 10000, 
    success: function(data){ 
    $('.holder').html(data); 
    setTimeout(function(){UpdateComs(); },5000); 
    }, 
    error: function(XMLHttpRequest, textStatus, errorThrown){ 
    //do what you want with the error 
    setTimeout(function(){UpdateComs(); },5000); 
    } 
}); 
} 
+0

谢谢,我会尽力实施,在未来:)我问我的虚拟主机一下,他们说这可能是因为我的IP地址已访问的服务器超过2000次在24小时内,这引起了ip禁止页面。这是否意味着有2000个不同的连接,或者它通过一个连接2000次访问数据,是否需要担心?如果我收到付费虚拟主机,那么我可以避免这个限制..谢谢你的回复:) – user1199434 2012-03-04 23:28:04

+0

请注意,发送下一个请求,你可能想使用'complete()'回调,而不是重复'setTimeout()'调用在'success'和'error'回调中。 – 2017-04-16 20:09:18