Php 如何在不刷新整个页面的情况下刷新背景中的相机图像?

Php 如何在不刷新整个页面的情况下刷新背景中的相机图像?,php,jquery,ajax,refresh,Php,Jquery,Ajax,Refresh,我正在使用PHP脚本(currentimage.PHP)从我的CCTV IP摄像头中获取快照,它工作正常: <?php while (@ob_end_clean()); header('Content-type: image/jpeg'); // create curl resource $ch = curl_init(); curl_setopt($ch, CURLOPT_USERAGENT, $useragent); curl_setopt($ch, CURLOPT_

我正在使用PHP脚本(currentimage.PHP)从我的CCTV IP摄像头中获取快照,它工作正常:

<?php
while (@ob_end_clean()); 
    header('Content-type: image/jpeg'); 
// create curl resource 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_USERAGENT, $useragent); 
curl_setopt($ch, CURLOPT_URL, 'http://192.168.0.20/Streaming/channels/1/picture'); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); 
curl_setopt($ch, CURLOPT_USERPWD, 'username:password'); 
// $output contains the output string 
$output = curl_exec($ch); 
echo $output; 
// close curl resource to free up system resources 
curl_close($ch);
?>

和另一个显示数据的PHP/HTML:

<IMG id="myImage" SRC='currentimage.php'>

但我无法让它每30秒刷新一次背景图像。 我正在尝试AJAX,但没有成功:

<script>
      function refresh_image(){
          document.getElementbyId("myImage").setAttribute("src", "currentimage.php");
        }
        setInterval(function(){refresh_image()}, 30000);
</script>

函数refresh_image(){
document.getElementbyId(“myImage”).setAttribute(“src”、“currentimage.php”);
}
setInterval(函数(){refresh_image()},30000);

我做错了什么?如果您能提供任何帮助,我将不胜感激。

我怀疑这里的主要问题是浏览器会缓存您的文件,如果您再次设置属性,则不会重新加载该文件。不过,我找到了一种解决方法:

document.getElementbyId("myImage").setAttribute("src", "currentimage.php?version=1");

保存版本号并在每次发出请求时计数。这样,浏览器会将其视为新的URL,并再次重新加载(使用浏览器的“网络”选项卡中的“开发人员”功能进行检查)

我尝试过通过定时请求将显示的图像更改为PHP脚本,效果很好。如果URL被修改,一个新的请求将被激发到图像获取脚本,我通过在URL中添加一个版本号作为参数来实现这一点

var版本=1;
函数refresh_image(){
document.getElementById(“myImage”).setAttribute(“src”、“currentimage.php?ver=“+version”);
版本++;
}
setInterval(函数(){
刷新图像();
}, 2000);