Aby przetestować ajax współpracujący z rysowaniem po canvas za pomocą js napisałem prosty programik
i działa na płatnym serwerze a u mnie nie chce działać na apache2
podaje kod:
<canvas style="background:#F0F0F0" id="krzyzyki" width="150" height="150" />
var tab = [[0,0,0],[0,0,0],[0,0,0]];
var X=0;
var Y=0;
//var tabt = new Array();
var zmiana=0;
var bok =40;
var ctx=document.getElementById("krzyzyki").getContext('2d');
function rysujKrzysz(x,y)
{
//ExtendFirefoxEvent(e);
ctx.beginPath();
ctx.strokeStyle= "rgb(0,0,0)";
ctx.moveTo(bok*x, bok*y);
ctx.lineTo(bok*x+bok,bok*y+bok);
ctx.stroke();
ctx.moveTo(bok*x, bok*y+bok);
ctx.lineTo(bok*x+bok,bok*y);
ctx.stroke();
ctx.closePath();
}
function marz(x,y)
{
// ctx.rect(x*bok,y*bok,bok,bok);
ctx.beginPath();
ctx.fillStyle = "rgb(255,255,255)";
ctx.fillRect(x*bok,y*bok,bok,bok);
ctx.fill();
ctx.closePath();
}
function czysc()
{
ctx.fillStyle = "#00FF00";
ctx.fillRect(0,0,150,150);
ctx.fill();
}
var zablokuj=false;
xmlhttp=new XMLHttpRequest();
function odebrane()
{
zablokuj=true;
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
var con=xmlhttp.responseText;
// alert(con);
var temp=con.split(" ");
var m=0;
for(var i =0 ;i<3;i++)
{
for(var j=0;j<3;j++)
{
tab[i][j]=parseInt(temp[m]);
m++;
}
}
m=0;
zablokuj=false;
}
//zablokuj=false;
}
xmlhttp.onreadystatechange=odebrane;
function process()
{
rysujKrzysz(0,0);
marz(0,0);
if(!zablokuj){
czysc();
for(var i=0;i<3;i++)
for(var j=0;j<3;j++)
{
if(tab[i][j]){
rysujKrzysz(j,i);
}else{
marz(j,i);
}
}
}
zablokuj=true;
xmlhttp.open("GET","s2.php?czy=0"+"&X="+X.toString()+"&Y="+Y.toString(),true);
xmlhttp.send(null);
zmiana=0;
setTimeout("process()",500);
}
function nacmysz(e)
{
zablokuj=true;
X=Math.floor(e.layerX/bok);
Y=Math.floor(e.layerY/bok);
zmiana=1;
xmlhttp.open("GET","s2.php?czy=1"+"&X="+X.toString()+"&Y="+Y.toString(),true);
xmlhttp.send(null);
}
krzyzyki.addEventListener("mousedown", nacmysz, false);
process();
i skrypt s2.php
<?php
$czy = $_REQUEST['czy'];
$X = $_REQUEST['X'];
$Y = $_REQUEST['Y'];
$filename = "tablicunia.txt";
$content = file($filename); $array = explode(" ", $content[0
]); $krzyzyki = $content[0];
if((int)$czy)
{
if((int)($array[$Y*3+$X]))$array[$Y*3+$X]='0';
else
$array[$Y*3+$X]='1';
$fp = fopen($filename,"w"); }
?>
//echo($czy);
//echo($X);
//echo($Y);
?>
i na płatnym serwerze wszystko w miarę działa można klikać i krzyżyki pokazują się lub znikają a wszyscy użytkownicy widzą zmiany
swoje i innych natomiast na moim localhoście z apache2 jeśli kliknę to zaraz samo się zmienia
ja ogólnie jestem zielony jeśli chodzi o webowe umiejętności prosiłbym Was którzy się lepiej znacie o pomoc i może jeszcze
o wytłumaczenie dlaczego tak jak ja napisałem nie działa prawidłowo z góry dziękuje
Już doszedłem co trzeba zrobić.
Trzeba napisać w konsoli:
sudo chmod a+w /var/www/html/tablicunia.txt
okazuje się że apache2 nie był uruchomiony przez użytkownika mającego uprawnienia do zapisu w plikach w tym katalogu stąd ten problem.
przepraszam za kłopot.