我有一個任務來創建社交網絡
如何通過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