我正在尝试执行以下操作:
1:加载一个XML文件(带有一个列表设备,它有一个静态名称,一个不断变化的值和注释)-这适用于
2:将XML(t=0)加载到变量中,以便在HTML中轻松使用-这适用于
3:再次加载XML(t=200ms)-这很有效(我认为)
4:检查两个XML的之间是否有任何值发生了变化
5:如果为TRUE,则更新一个或多个<DIV id=>
任务1:我想我需要让loadxml脚本在完成时或每隔200毫秒再次运行一次任务2:我需要编写并调用一个可以更新<DIV id=>
的脚本
为了便于理解,我只使用了两个参数来编写代码,并在我认为需要的地方添加了注释。
如果这是一个疯狂的整体架构,请给我一个方向。
<?php
loadxml() ;
function loadxml() {
$feed_url = "demoxml.xml";
$xml = file_get_contents($feed_url);
$array = json_decode(json_encode((array)simplexml_load_string($xml)),1);
for ($id=1; $id<=157; $id++) {
//dynamic
$generation='new';
$hs3device_note[$id][$generation]= $array['device'][$id]['@attributes']['note'] ;
if ($hs3device_note[$id]['current'] != $hs3device_note[$id]['new']) { ;
$hs3device_note[$id]['current'] = $hs3device_note[$id]['new'] ;
//CALL SCRIPT (like ReplaceContentInContainer) TO UPDATE <DIV id = $id> WITH CONTENT $hs3device_note[$id]['new'])
} ;
$hs3device_value[$id][$generation]= $array['device'][$id]['@attributes']['value'] ;
if ($hs3device_value[$id]['current'] != $hs3device_value[$id]['new']) { ;
$hs3device_value[$id]['current'] = $hs3device_value[$id]['new'] ;
//CALL SCRIPT (like ReplaceContentInContainer) TO UPDATE <DIV id = $id> WITH CONTENT $hs3device_note[$id]['new'])
} ;
}
//MAKE loadxml() call it self or restart in 200 ms
} ;
<script type='text/javascript' src='jquery-1.7.2.js'>
function ReplaceContentInContainer() {
var container = document.getElementById(id);
container.innerHTML = content;
}
</script>
<DIV id="hs3device_note[34]['current']">...</DIV>
<DIV id="hs3device_value[34]['current']">...</DIV>
AJAX或异步JavaScript和XML是一种从JavaScript异步向服务器发送请求的方法(因此得名),对于您的问题,这意味着您可以(以指定的间隔)向服务器发送一个请求,查看某些数据是否发生了更改,如果PHP脚本的评估结果为true(即发生了更改),则会将其发送回HTML页面,以替换正在显示的现有数据。
function myXMLRequest() {
var request = $.ajax({
url: "script.php",
type: "POST",
data: { action:'testmyxml' },
dataType: "html"
});
request.done(function( msg ) {
setTimeout(function() {
myXMLRequest();
}, 5000);
if(msg != "") {
$( "#mydiv" ).html( msg );
}
});
request.fail(function( jqXHR, textStatus ) {
alert( "Request failed: " + textStatus );
});
}
$(document).ready(function() {
myXMLRequest();
});
参考资料:JQuery API文档。
http://api.jquery.com/jquery.ajax/
script.php
是您的php脚本,它执行所有逻辑,数据使用php的"echo"命令发送回,如果没有,则不回显任何内容。。。(您可以测试msg
是否为空客户端)。msg
将保存PHP在script.php
中响应的所有信息,并可以放入div中,如我的示例所示。