PHP / AJAX:每3秒获取一次网页内容,直到它发生变化

时间:2014-06-19 17:05:16

标签: javascript php jquery ajax

我有一个网络服务器(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>";

1 个答案:

答案 0 :(得分:3)

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.');
});