2014-10-30 54 views
0

對於項目形式學校,我想在我的網站上創建一個實時比分。現場比分必須顯示姓氏(姓名)姓氏(achternaam)和球員得分。使用jQuery/AJAX顯示php數據

我做了一個php文件(feed.php),它執行一個sql查詢從數據庫中選擇10個值(2個表合併) Feed.php將編碼和數組(json_encode)。這是工作,當我打印結果。

但是,我不得不從index.html調用feed.php與jquery/ajax。我想每秒刷新一次分數,看看是否有人得到更好的分數。

我設法得到的東西顯示,但我只看到「未定義」,它不斷加載。所以一分鐘後我得到了60分「分數」。

我在做什麼錯了,怎麼才能在頁面上顯示10條記錄?

非常感謝提前!

這是我使用的代碼:

的index.html:

<script> 
$.get("feed.php", function(data) { 
    $("#score") 
    .append("<tr><td>" + data.voornaam + "</td><td>" + data.achternaam + "</td><td>" + data.score +"</td></tr>").fadeIn("slow"); 
}, "json") 

</script> 

feed.php:

$sql = "SELECT 
      game.userID, 
      game.score, 
      roboshooter.id, 
      roboshooter.voornaam, 
      roboshooter.achternaam 
     FROM 
      game, roboshooter 
     WHERE 
      game.userID = roboshooter.id 
     ORDER BY game.score DESC LIMIT 10 
     "; 

$result = mysqli_query($con,$sql); 

while($row = mysqli_fetch_assoc($result)) 
{ 
    $return = json_encode(array(
      "voornaam" => $row['voornaam'], 
      "achternaam" => $row['achternaam'], 
      "score" => $row['score'] 
     )); 
      print_r($return); 
} 

回答

2

print_r呈現JSON響應無效。

$return = array(); 
while($row = mysqli_fetch_assoc($result)) 
{ 
    $return[] = $row; 
} 
echo json_encode($return); 

您必須返回單個json對象,否則它是無效的。

因爲這將返回一個數組,你必須適應你的JavaScript以及:

for (var i = 0; i < data.length; i++) { 
    $("#score").append("<tr><td>" + data[i].voornaam + "</td><td>" + data[i].achternaam + "</td><td>" + data[i].score +"</td></tr>").fadeIn("slow"); 
} 
+0

謝謝你的反應。 我認爲我仍然在做錯事。用你的答案,我得到57行顯示「未定義」3次。 我試圖改變feed.php到以下內容: '$ return = array();同時($ row = mysqli_fetch_assoc($ result)) { $ return ['voornaam'] = $ row ['voornaam']; $ return ['achternaam'] = $ row ['achternaam']; $ return ['score'] = $ row ['score']; } echo json_encode($ return);' 我的index.html文件沒有改變,但feed.php只顯示最後一個數據庫記錄。 你知道我在做什麼錯嗎? 在此先感謝! – Jules 2014-10-31 12:27:17

+0

您在每次迭代中覆蓋$ return。您需要爲每行添加一個對象。使用我的答案中的代碼並在循環後面添加'var_dump($ return);'來查看未定義索引的來源。 – 2014-10-31 12:34:38