Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Skrypt wykorzystujący ajax php i js oraz element canvas nie działa
InfinityDimensio...
post 16.04.2017, 17:18:06
Post #1





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 21.05.2016

Ostrzeżenie: (0%)
-----


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:
  1. <title>tesciczek</title>
  2. </head>
  3. <canvas style="background:#F0F0F0" id="krzyzyki" width="150" height="150" />
  4. var tab = [[0,0,0],[0,0,0],[0,0,0]];
  5.  
  6. var X=0;
  7. var Y=0;
  8. //var tabt = new Array();
  9. var zmiana=0;
  10. var bok =40;
  11. var ctx=document.getElementById("krzyzyki").getContext('2d');
  12. function rysujKrzysz(x,y)
  13. {
  14. //ExtendFirefoxEvent(e);
  15. ctx.beginPath();
  16. ctx.strokeStyle= "rgb(0,0,0)";
  17. ctx.moveTo(bok*x, bok*y);
  18.  
  19. ctx.lineTo(bok*x+bok,bok*y+bok);
  20. ctx.stroke();
  21. ctx.moveTo(bok*x, bok*y+bok);
  22.  
  23. ctx.lineTo(bok*x+bok,bok*y);
  24. ctx.stroke();
  25. ctx.closePath();
  26. }
  27. function marz(x,y)
  28. {
  29. // ctx.rect(x*bok,y*bok,bok,bok);
  30. ctx.beginPath();
  31. ctx.fillStyle = "rgb(255,255,255)";
  32. ctx.fillRect(x*bok,y*bok,bok,bok);
  33. ctx.fill();
  34. ctx.closePath();
  35. }
  36. function czysc()
  37. {
  38. ctx.fillStyle = "#00FF00";
  39. ctx.fillRect(0,0,150,150);
  40. ctx.fill();
  41. }
  42. var zablokuj=false;
  43. xmlhttp=new XMLHttpRequest();
  44. function odebrane()
  45. {
  46. zablokuj=true;
  47. if (xmlhttp.readyState==4 && xmlhttp.status==200) {
  48. var con=xmlhttp.responseText;
  49. // alert(con);
  50. var temp=con.split(" ");
  51. var m=0;
  52.  
  53. for(var i =0 ;i<3;i++)
  54. {
  55. for(var j=0;j<3;j++)
  56. {
  57. tab[i][j]=parseInt(temp[m]);
  58.  
  59. m++;
  60. }
  61. }
  62. m=0;
  63. zablokuj=false;
  64. }
  65. //zablokuj=false;
  66. }
  67. xmlhttp.onreadystatechange=odebrane;
  68. function process()
  69. {
  70. rysujKrzysz(0,0);
  71. marz(0,0);
  72. if(!zablokuj){
  73. czysc();
  74. for(var i=0;i<3;i++)
  75. for(var j=0;j<3;j++)
  76. {
  77. if(tab[i][j]){
  78. rysujKrzysz(j,i);
  79. }else{
  80. marz(j,i);
  81. }
  82. }
  83. }
  84. zablokuj=true;
  85. xmlhttp.open("GET","s2.php?czy=0"+"&X="+X.toString()+"&Y="+Y.toString(),true);
  86. xmlhttp.send(null);
  87. zmiana=0;
  88.  
  89. setTimeout("process()",500);
  90. }
  91. function nacmysz(e)
  92. {
  93. zablokuj=true;
  94. X=Math.floor(e.layerX/bok);
  95. Y=Math.floor(e.layerY/bok);
  96. zmiana=1;
  97. xmlhttp.open("GET","s2.php?czy=1"+"&X="+X.toString()+"&Y="+Y.toString(),true);
  98. xmlhttp.send(null);
  99.  
  100. }
  101. krzyzyki.addEventListener("mousedown", nacmysz, false);
  102. process();
  103.  
  104. </script>
  105. </body>
  106. </html>

i skrypt s2.php
  1. <?php
  2. $czy = $_REQUEST['czy'];
  3. $X = $_REQUEST['X'];
  4. $Y = $_REQUEST['Y'];
  5. settype($X, 'integer');
  6. settype($Y, 'integer');
  7. $filename = "tablicunia.txt";
  8. $content = file($filename);
  9. $array = explode(" ", $content[0]);
  10. $krzyzyki = $content[0];
  11. if((int)$czy)
  12. {
  13. if((int)($array[$Y*3+$X]))$array[$Y*3+$X]='0';
  14. else
  15. $array[$Y*3+$X]='1';
  16.  
  17. $krzyzyki = implode(" ", $array);
  18. $fp = fopen($filename,"w");
  19. fputs($fp,$krzyzyki);
  20. fclose($fp);
  21. }
  22.  
  23. ?>
  24. <?php echo($krzyzyki);
  25. //echo($czy);
  26. //echo($X);
  27. //echo($Y);
  28. ?>

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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 25.06.2018 - 18:36