从PHP触发jquery脚本


Trigger jquery script from PHP

我正在尝试执行以下操作:

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中,如我的示例所示。