变量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