[AJAX] Récupérer un tableau de données au retour Ajax
Bonjour,
Soit une liste déroulante qui permet à l'utilisateur de choisir le score d'un concours ou d'un autre.
Code:
1 2 3 4 5 6
| <select id="select_score"
onchange="javascript:changeScores(5, document.forms.formChoixScores.select_score.options.selectedIndex)"
>
<option value="1">un lot</option>
<option value="9">un autre lot</option>
</select> |
La fonction changeScore (non terminée, c'est là que je coince :? ) :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| function changeScores(joueur, lot)
{
contenuHTML = $.ajax({
url: "ajax/best_scores.php",
global: false,
type: "POST",
data: ({id_joueur : joueur, id_lot : lot}),
dataType: "json",
async:true,
success: function(jsonscore)
{
for (var i in jsonscore)
{
alert(jsonscore[i]);
}
}
}
).responseText;
} |
Le programme ajax/best_scores.php qui exécute la requête pour récupérer le tableau de score à afficher :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| $id_joueur = intval($_POST['id_joueur']);
$id_lot = intval($_POST['id_lot']);
// Récupération du meilleur score du joueur pour le lot choisi
$sql = "
SELECT tmp.msc_meilleur_temps, tmp.msc_nb_reponses, tmp.rang
FROM
(
SELECT msc_id_lot, msc_id_joueur, msc_meilleur_temps, msc_nb_reponses,
@rank1 := @rank1 + 1 AS rang
FROM meilleurs_scores
CROSS JOIN
(
SELECT @rank1 := 0
) tmp
WHERE msc_id_lot = $id_lot
ORDER BY msc_id_lot ASC,
msc_nb_reponses DESC,
msc_meilleur_temps ASC
) tmp
WHERE tmp.msc_id_joueur = $id_joueur
";
$result = mysql_query($sql);
$row = mysql_fetch_array($result);
$score['temps'] = $row['msc_meilleur_temps'];
$score['nb_rep'] = $row['msc_nb_reponses'];
$score['rang'] = $row['rang'];
$jsonscore = json_encode($scores);
echo $jsonscore; |
Pour commencer, ai-je bien fait de penser récupérer un json ?
Ensuite, comment traiter ce json en retour ?
J'ai essayé un début avec for (var i in jsonscore) mais je n'arrive pas à afficher le contenu du json.
Et vu l'heure, j'ai du mal à réfléchir. :oops: