2012-03-03 97 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