2013-05-01 59 views
1

我試圖做一個沒有頁面刷新的實時遊戲。 問題是我不知道下一步該怎麼做,或者當玩家在地圖上移動時如何配置ajax腳本來更新mysql數據庫。使用ajax遊戲項目更新數據庫

這裏是試圖使用的阿賈克斯代碼。

 //calling ajax to update player location when he move around 
     function send(url){ 
var request; 
try{ 
    request= new XMLHttpRequest(); 
} catch (e){ 
    try{ 
     request= new ActiveXObject("Msxml2.XMLHTTP"); 
    } catch (e) { 
     try{ 
      request= new ActiveXObject("Microsoft.XMLHTTP"); 
     } catch (e){ 
      alert("Your browser broke!"); 
      return false; 
     } 
    } 
} 
request.onreadystatechange = function(){ 
    if(request.readyState == 4){ 
     //I dont know what to add here :-(
    } 
} 
request.open("GET", url, true); 
request.send(null); 
} 
send("update_location.php?newX="+ toX + "&newY=" + toY) 

update_location.php

<?php 
$new_x=$_GET['newX']; 
$new_y=$_GET['newY']; 
//echo"$new_x , $new_y"; 
$update_loc=mysql_query("UPDATE users SET location_x='$new_x' WHERE username='admin'"); 
?> 

主要IDEEA是,當玩家在任何地方移動地圖阿賈克斯更新新的x和y的值到database.I不需要任何按鈕或jQuery代碼補充說,如果有人幫我做這件事,我認爲ajax可以正常工作。

P.S. toX和toY是javascript vars,我轉換到php變量,所以我可以更新他們到mysql datavase.If有人可以幫助我做到這一點,我真的很感激!

回答

1

首先解決你在這種情況下要做的事情。從你的描述我不認爲它清楚。

如果你想根據你的ajax響應做些什麼,那麼onSucess是正確的選項,而不是onreadystatechange

如果您想對Ajax響應做些什麼,那麼您應該從服務器端發送所需的數據,並使用它在JavaScript代碼中執行所需的操作。

E.g ..

new Ajax.Request('testurl',{ 
      method: 'post', 
      parameters: {param1:"A", param2:"B", param3:"C"}, 
      onSuccess: function(response){ 
      //do something here 

     } 
     }); 
+0

我tryed它已經,當我刷新頁面來測試它,它上傳數據庫一樣 – 2013-05-01 09:42:17

+0

之前是空值。那是因爲如果你看到正確的話,你正在發送你的ajax請求中的ntng – LPD 2013-05-01 09:43:52