我有一个任务来创建社交网络
如何通过ajax每X秒自动更新画布屏幕?
我有一个主页,显示用户通过画布创建的所有图纸。用户可以绘制自己的图纸,并可以添加贡献者,它们也可以绘制图纸。事情是他们都可以在同一时间以某种方式绘制。
我想要做的事情是,当一个用户绘制画布图像时,它正在更新其他正在观看同一图形而不刷新页面的用户。
我想指出,节目效果很好,唯一的问题是,你必须刷新页面,看看图纸
这里的变化是我添加以前前drawed图片空白的画布,我的客户端代码新的绘图
canvas = document.getElementById('can');
contain = document.getElementById('contain');
ctx = canvas.getContext("2d");
var imageObj = new Image();
imageObj.src = ''+drugi+'/'+prvi+'.png';
imageObj.onload = function() {
ctx.drawImage(this, 0, 0);
};
这里是请求AJAX来保存draw()函数的每次启动后绘制(这是每次您移动鼠标而在画布上绘制)
ctx.beginPath();
ctx.moveTo(prevX, prevY);
ctx.lineTo(currX, currY);
ctx.strokeStyle = x;
ctx.lineWidth = y;
ctx.stroke();
ctx.closePath();
var dataURL = canvas.toDataURL("image/png");
var ajax = new XMLHttpRequest();
ajax.open("POST",'saveimg.php',false);
ajax.setRequestHeader('Content-Type', 'application/upload');
ajax.send(dataURL);
这是服务器端代码
<?php
session_start();
$crtez = $_SESSION['tmpdrawing'];
$kategorija = $_SESSION['tmpkat'];
if (isset($GLOBALS["HTTP_RAW_POST_DATA"]))
{
$imageData=$GLOBALS['HTTP_RAW_POST_DATA'];
$filteredData=substr($imageData, strpos($imageData, ",")+1);
$unencodedData=base64_decode($filteredData);
$fp = fopen($kategorija . '/' . $crtez . '.png', 'wb');
fwrite($fp, $unencodedData);
fclose($fp);
?>
现在,当我们有一个代码,我想实际的就是第一个代码,从而改变帆布外观每3秒上马例如,所以当前在该图上的其他用户可以看到图片更新而不刷新页面。
如果您需要更多代码在客户端我会发布。
我想再次说,项目工程perfectyl,我需要完成它的唯一的事情就是通过AJAX
把ajax函数放在[** setInterval **](https://developer.mozilla.org/en/docs/Web/API/window.setInterval)里面吧? – asprin