變量ALARM_POPUP
通過shell腳本它取代了每分鐘變化一次內容在變量上。
這意味着要在頁面上看到該更改,必須調用服務器以獲取更新的值。你沒有那樣做。
你可以通過ajax
來實現。創建一個服務器端頁面,輸出ALARM_POPUP
的原始文本(使用Content-Type: text/plain
)或JSON(使用Content-Type: application/json
)的新值並觸發ajax
調用以獲取該頁面的內容,然後使用它更新qtip
。你不會想要setInterval
,因爲在調用時間長度不確定的情況下,事情會很快變得混亂。相反,只要在上一個週期完成後啓動一個setTimeout
。
假設您創建一個updatealarm.xyz
頁面(PHP,JSP,ASP.Net,等等),輸出電流ALARM_POPUP
價值爲純文本,將看東西這樣的:
(function()
{
var ALARM_POPUP="Alarm Warning warning ";
function updateQtip(popupText)
{
$('#telecom_1').qtip({content:popupText,style: {name: 'dark', tip: 'topLeft'} });
setTimeout(nextUpdate, 5000);
}
function nextUpdate()
{
$.ajax({
url: "updatealarm.xyz",
success: function(data)
{
ALARM_POPUP = data; // Although you don't actually need to update it
updateQtip(data);
},
error: function()
{
// Do error handling
}
});
}
updateQtip();
})();
關於你的原setInterval
電話:最好不要將字符串傳入setInterval
或setTimeout
;這基本上是做一個eval
,這既不必要也不是一個好主意。相反,如上所述,傳入函數引用(例如,函數名稱,不調用()
)。
重新下方的評論:
我有這個問題,我想知道,如果你提供的PHP文件將是什麼樣子
我有一個例子只做了一點PHP,但我相信它看起來像這樣:
<?php
header('Content-Type: text/plain');
echo 'This is the message that will end up in \'data\' in the ajax success handler.';
?>
或if您喜歡使用一個變量來使它更容易爲你的sed
腳本:
<?php
header('Content-Type: text/plain');
$alarm_popup = 'This is the message that will end up in \'data\' in the ajax success handler.';
echo $alarm_popup;
?>
即使你打電話每5秒你打算如何更新'ALARM_POPUP'內容的功能?它似乎在服務器上生成,但一旦它被下載到瀏覽器,它不會改變,除非你正在做一些AJAX請求 – CodingHamster
@ user628405 ALARM_POPUP的內容是通過使用sed代替當前文本的shell腳本改變的與新的文本。它總是更新,只是jquery沒有刷新窗口而沒有刷新它,我不能這樣做,因爲頁面的其他部分。 – Rhys