Hallo,

Ik wil graag een live score maken voor mijn website, maar ik krijg het niet voor elkaar. Wanneer ik verschillende tutorials volg krijg ik meestal niets te zien op mijn website of er komt "undefined" te staan.

Hebben jullie een goede tutorial of weten jullie wat er mis is met mijn code?
De gegevens worden wel juist opgehaald via feed.php

Onderstaand de code:

index.html:

<script>
  $(document).ready(function(){
   var url = 'feed.php';
      $.getJSON(url, function(data) {
          $.each(data, function(index, data) {
           $('#score').append('<tr>');
       $('#score').append('<td>'+data.voornaam+'</td>');
       $('#score').append('<td>'+data.achternaam+'</td>');
       $('#score').append('<td><b>'+data.score+'</b></td>');
       $('#score').append('</tr>');
    });
  });
});
</script>


feed.php:

<?php

$con = "VERBINDING MET DATABASE OPZETTEN";
$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_array($result))
{
    $return = array(
      'voornaam' => $row['voornaam'],
      'achternaam' => $row['achternaam'],
      'score' => $row['score']
    );
    // 'voornaam' = $row['voornaam'];
echo    json_encode($return);
}


?>


Hopelijk weten jullie wat ik fout doe.

Bedankt!
kan je mogelijk via JSfiddle.net een testcase maken? Dan zal er meer over duidelijk worden.
Of kan je aangeven waar in de code de 'undefined' getriggerd wordt?
Ik heb een andere code die de "undefined" terug geeft. Dat is onderstaande:


<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>

<?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);
}
?>


Fiddle van script zonder weergaven: http://jsfiddle.net/juleskreutzer/thkfhj2o/
Fiddle van script met de weergaven "undefined": http://jsfiddle.net/juleskreutzer/jh2kyopk/
Ik neem aan dat je wel de jQuery-library inlaadt?
Print_r() geeft geen geldige JSON-format voor data terug.
print_r() was er alleen voor om te zorgen dat ik kreeg te zien wat de de inhoud was van json_encode(). Output is als volgt:

{"voornaam":"Thijs","achternaam":"De Vries","score":"24"}{"voornaam":"Thijs","achternaam":"De Vries","score":"23"}{"voornaam":"Sem","achternaam":"van Halbeek","score":"20"}{"voornaam":"Jules","achternaam":"Kreutzer","score":"13"}{"voornaam":"Sem","achternaam":"van Halbeek","score":"4"}
En wat zegt de error-console (Ctrl+SHIFT+J) ?
Console geeft enkel een error die betrekking heeft op de Facebook login knop op mijn pagina. De javascript code van Facebook staat onder de code voor de live score.
Je JSON is verkeerd, je echoed elke keer 1 JSON array. Alleen deze JSON array moet ook weer in JSON geplaatst worden anders krijgt de Ajax call geen juiste JSON aangeleverd waardoor er "undefined".


<?php

	$return = array();

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

	echo json_encode($return);
?>
Sabaton, jou code werkt helaas niet helemaal. wanneer ik de regel

$return[] = array( ... );

aanpas naar:

$return = array( ...);

dan werkt het wel, echter krijg ik dan alleen de laatste record te zien.

Zou ik dit kunnen oplossen met een for-loop in de javascript code? indien ja, dan gebruik ik waarschijnlijk een verkeerde code

for(var i = 0; i < 10; i++) { 
...
}

Reageren