2014-02-27 67 views
0

我有一個重定向到頁面的按鈕。我想要重定向的頁面的PHP腳本需要幾分鐘的時間。在等待PHP腳本時,我希望setInterval調度程序使用jQ AJAX刷新內容,但似乎並未在重定向加載時執行。有任何想法嗎?

代碼:

heartbeatInterval = 10000; 
$(document).ready(
    function() { 

     console.log('Document got ready.') 

     setInterval(function() { 
      heartbeat(); 
     }, heartbeatInterval); 
}); 

$('#button').click(function() { 
    window.location.href = '/...'; 
}); 

function heartbeat() { 

console.log('Heartbeat triggers.'); 

$.ajax({ 
    url : action_heartbeat, 
    type : 'POST', 
    data : 'test', 
    success : function(response) { 
     $('#status').css('color', 'green').html($('#status').html() + '<br>Connected: ' + response); 
     console.log('Heartbeat finishes.'); 
    }, 
    error : function(xhr, message) { 
     $('#status').css('color', 'red').html($('#status').html() + '<br>Connection lost: ' + message); 
    } 
}); 

} 
+0

我們有很多想法。你想與我們分享你的代碼,以便我們可以幫助你嗎? –

+0

請給我們一些代碼。另外我要調查的第一件事就是爲什麼一個頁面需要幾分鐘的時間才能運行......並且,我想你的代碼甚至會向同一個腳本發送幾個連續的請求,使其運行得更慢...... –

+0

長的PHP腳本是很好,它產生了很多東西,一些分鐘是一個不錯的表現。我稱之爲Ajax請求的PHP腳本並不相同。那個需要大約100ms。 – Aich

回答

0

這是不可能的。請注意,PHP(服務器端)在任何JavaScript(客戶端)之前運行。

所以您需要首先完成PHP。可能有一種方法可以在頁面中嵌入的iframe中運行PHP,這可能允許更快加載具有要在其中運行的JavaScript的頁面。

+0

看看我添加的代碼片段。我不想從目標頁面執行JavaScript。但是當我點擊按鈕時,心跳函數不會調用任何進一步的Ajax請求。 – Aich

相關問題