5 votes

Obtenir JSON avec jQuery

Lorsque j'essaie d'afficher les données avec getJSON, rien ne se passe, $('#child-left-container-2') devrait afficher les données du fichier php. Où ai-je fait une erreur?... Ci-dessous est un bref exemple de mon code.

fichier php

while($row = mysql_fetch_assoc($query)) {

//code

    $array[] = "$details1";

            }

            echo json_encode($array);

jquery

$(function() {
    $('.next_button').click(function() {

var id =  $('#container').find('.graphic-blank:visible').siblings().attr('id');

        $.getJSON('fetchstack.php?id='+id,function(data) {

            $('#child-left-container-2').html(''); //clear div

            $.each(data,function(i,result) {
                $('#child-left-container-2').append(result);
            });
        });

          });
});

1voto

petervaz Points 1240

Je ne sais pas si cela résoudrait le problème que vous rencontrez, mais voici comment je résoudrais ce problème particulier. Essayez ce code, s'il fonctionne, arrêter d'envoyer du html via json serait un bonus.

$key = 0;
while($row = mysql_fetch_assoc($query)) {
    //code
    $array[$key]['id']      = $id;
    $array[$key]['sid']     = $sid;
    $array[$key]['user']    = $user;
    $array[$key]['content'] = $details1;
    $array[$key]['style']   = $style;
    $key++;
}

echo json_encode($array);

JS:

$(function() {
    $('.next_button').click(function() {

        var id =  $('#container').find('.graphic-blank:visible').siblings().attr('id');
        $.getJSON('fetchstack.php?id='+id,function(data) {
            $('#child-left-container-2').html(''); //clear div

            for (var i in data){
                var id      = data[i].id;
                var sid     = data[i].sid;
                var user    = data[i].user;
                var content = data[i].content;
                var style   = data[i].style;
                $('#child-left-container-2').append($('

Je dois admettre que ne sachant pas ce qu'est $style ni comment il apparaîtrait rendu, je n'ai pas pu l'ajouter à la chaîne. Si vous postez le contenu de $style, je pourrai mettre à jour la réponse. J'espère que cela vous aide.

0voto

Zak Henry Points 490

Dans la deuxième ligne de votre jQuery

var id =  $('#container').find('.graphic-blank:visible').siblings().attr('id');

vous essayez d'accéder à l'attribut id d'un tableau d'objets jQuery (les siblings()). Vous devez spécifier un objet jQuery pour obtenir l'identifiant pour votre fonction $getJSON

Mettre à jour s'il n'y a qu'un seul frère, spécifiez-le en faisant

var id =  $('#container').find('.graphic-blank:visible').siblings().eq(0).attr('id');

0voto

Adam F Points 1354

Je ne veux pas du tout vous insulter, mais ce que vous faites est une mauvaise pratique. Si vous créez le HTML côté client, vous pouvez avoir des requêtes plus courtes. De plus, si vous utilisez Firebug, vous pouvez voir un graphique de votre JSON de sortie. C'est vraiment une fonctionnalité astucieuse. Vous pouvez également vérifier si cela est sauvegardé sous la section DOM de Firebug. Bonne chance.

0voto

Garry Lachman Points 1

Avant de définir la réponse aux éléments html avec pour le déboguer avec console.log,

je ne vois pas que vous avez créé un div pour response = $('#child-left-container-2') vérifiez si vous l'avez

et vérifiez votre réponse, peut-être que le json est sous forme de tableau... essayez console.log(data) et ouvrez le débogueur avec F12

0voto

Martti Laine Points 2677

Pourquoi ne pas simplement afficher le HTML dans le fichier PHP et ensuite remplir le conteneur avec celui-ci?

while($row = mysql_fetch_assoc($query)) {
    echo "$details1";
}

$.getJSON('fetchstack.php?id='+id,function(data) {
    $('#child-left-container-2').html(data);
});

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X