2012-01-15 3 views
0

Actuellement, j'ai deux sections HTML, 'standard' et 'vedette'. Mon code jQuery scinde les objets JSON dans les deux catégories et les affiche dans la section désignée, selon qu'ils sont «présentés» ou non. Actuellement, cependant, tous les objets avec la valeur 'featured' sont affichés. Comment est-ce que je change cela de sorte que seuls les quatre derniers objets JSON avec la valeur 'featured' sont affichés dans la section?Afficher uniquement les quatre derniers objets JSON

Je suppose que c'est aussi simple que d'ajouter une déclaration if, mais mes tentatives jusqu'à présent ne se sont pas bien passées.

JSON est la suivante:

{"blog":[ 
{ 
    "title":"This is the title", 
    "content":"And this is the content", 
    "date":"01/12/11", 
    "featured":"Yes" 
}, 
{ 
    "title":"This is another title", 
    "content":"And this is some more content", 
    "date": "01/01/12", 
    "featured":"No" 
}, 
{ 
    // Continuation 
} 
]} 

jQuery actuelle est:

$.getJSON("/TEST/readdb.php", function(json){ 
    if(json.blogs.length > 0) { 
     $.each(json.blogs, function(){ 
      var info = '<h2>' + this['title'] + '</h2><p>' + this['content'] + '</p><p id="date">' + this['date'] + '</p>'; 
      if(this['featured'] == "Yes") { 
       $('#featured').append(info); 
      } 
      else {$('#standard').append(info); 
      } 
     }); 
    } 
}); 
+1

voir cette même question http://stackoverflow.com/questions/777455/is-there-a-query-language-for-json – Daveo

+1

La meilleure façon de le faire est de ne récupérer que les quatre derniers éléments de db dans readdb.php. – Diode

+0

@Diode vous avez absolument raison. Je suis allé pour cette option à la fin, beaucoup, beaucoup plus simple. – Ryan

Répondre

0

La meilleure façon de le faire est d'aller chercher uniquement les quatre derniers articles en vedette de db dans readdb.php.

+0

Certainement le moyen le plus facile d'aller ici. Merci encore. – Ryan

0

Désolé vous ne voulez les quatre derniers en fonction de quel paramètre? Les quatre derniers éléments de votre code semblent être les 4 premiers éléments correspondant à Featured = Yes, par exemple, aucune date n'est prise en compte.

Essayez d'écrire $. De cette façon, puis n'utilisez pas non plus de comparateur égal, essayez de forcer une recherche de chaîne avec f.e. Indice de. Essayez d'abord pour le déboguer nom de la fonction et l'ennemi se paramètre avec chrome, je l'écris sans essai:

$.each(json.blogs, function(KEY, VALUE){ 
     var info = '<h2>' + this['title'] + '</h2><p>' + this['content'] + '</p><p  id="date">' + this['date'] + '</p>'; 
feat = VALUE.featured; 
     if(feat.indexOf('Yes')!=0) { 
      $('#featured').append(info); 
     } 
     else {$('#standard').append(info); 
     } 
    }); 
+0

Oui, j'aimerais afficher les quatre derniers objets JSON avec '" featured "=" yes "' ou une autre façon de voir, les quatre derniers ajoutés. – Ryan

+0

Votre code semble supprimer tout ce qui n'a pas la valeur 'oui'. – Ryan

+0

avez-vous essayé? Je ne pense pas: D vous récupérez d'abord la valeur de featured de chaque objet json. l'indexOf! = 0 signifie que le mot Yes a été trouvé dans string this.featured, donc vous pouvez l'ajouter à votre div. – giuseppe

Questions connexes