我有一个web服务器(www.domain.com),它正在ping一个子网web服务器(test.domain.com)显示的信息,直到它改变。我希望它每3秒运行一次检查,直到状态改变为等待消息之外的其他内容,然后我想在div中显示该信息。
我知道,我需要AJAX来运行这个不知何故,如果我想加载页面,然后有这个运行作为一个脚本,但我已经修改了也许2 AJAX脚本在我的生活和不知道去哪里与这一个。
下面的代码是我的测试基础PHP工作的基本工作流,但它完成所有的服务器端。
$str = file_get_contents($url);
$spanCount = preg_match_all("/'<span id'='"spanId'"'>(.*?)'<'/span'>/",$str,$span);
$spanString = implode($span[0]);
echo "<div class='status' style='display:inline;'>";
while($spanString == "<span id='"spanId'">Waiting for stuffs...</span>"){
echo "Waiting...";
$str = file_get_contents($url);
$spanCount = preg_match_all("/'<span id'='"spanId'"'>(.*?)'<'/span'>/",$str,$span);
$spanString = implode($span[0]);
sleep(3);
}
if($spanString != "<span id='"spanId'">Waiting for stuffs...</span>"){
echo "<pre>";
echo $spanString;
echo "</pre>";
}
echo "</div>";
AJAX调用需要消耗整个网页的HTML吗?如果它是一个你控制的服务,允许AJAX对你的php脚本做一个GET,并让它返回一个JSON对象的数据将使事情变得非常简单。
get to status.php returns -> {status:"waiting", content: null} //do nothing
get to status.php returns -> {status:"waiting", content: null} //do nothing
get to status.php returns -> {status:"someawesomestate", content: "<blink><marquee>You're our 1,000,000th visitor!</marquee></blink>"} // grab content and update page
如果你有问题,使用JSONP可以让你很容易地跨域抓取数据。(jQuery驱动的例子)
$.getJSON('the/path/status.php').
.done(function(json) {
if(json.status != "waiting") {
$('.some-container').html(json.content);
}
})
.fail(function( jqxhr, textStatus, error ) {
alert('something exploded.');
});