2010-01-12 17 views
1

J'essaie de créer un script en utilisant le de Yahoo YQL dans une application Web. Le script regarde un paragraphe de texte, puis il trouve des références et des ajouts sur le texte en tant que popup. Tout va bien jusqu'à ce que je doive parcourir chaque référence avec la classe "verso", après avoir obtenu ma réponse, elle ajoute toutes les références dans le dernier élément de la liste.Attendre la réponse getJSON

Voici le code javascript (réécrite et simplifiée)

  var url=""; 
      var version = "RVR1960"; 
      var verso = ""; 

      $("div.post-body").find(".verso").each(function(i){ 
       $resultado = null; 
       verso = $(this).text(); 
       url = "http://query.yahooapis.com/v1/public/yql?" + "q=select%20*%20from%20html%20where%20url%3D%22"+ 
        encodeURIComponent("http://www.biblegateway.com/passage/?search=" + verso + 
        "&version=" + version) + "%22&format=xml'&callback=?"; 
       $pasaje = $(this); 

       $.getJSON(url,function(data){ 
        if(data.results[0]) 
        { 
         $resultado = null; 
         $resultado = $(data.results[0]).find("div.result-text-style-normal:first"); 
         $resultado.find("h5, div, a").remove(); 
         $("<div class='cita'><span class='left'>&ldquo;</span>"+ 
          $resultado.html()+ 
          "<p align='right'><b>"+verso+"</b></p>"+ 
          "<span class='right'>&rdquo;</span></div>").appendTo($pasaje); 
        } 
        else 
        { 
         $resultado = $("<p>Pasaje no encontrado.</p>"); 
        } 
       }); 
      }); 

et voici mon html:

<div class="post-body"><b class="verso">Juan 3:16</b><b class="verso">Mateo 11:28</b><b class="verso">Juan 1:1</b></div> 

Je vais apprécier toute l'aide

+1

Quel est votre résultat attendu, et que se passe-t-il réellement? – mkoryak

+0

Je m'attends à ce que le script ajoute chaque référence à chaque élément avec la classe "verset" respectivement. Au lieu de cela, je reçois que tout est ajouté dans l'élément LAST de chaque boucle. –

Répondre

3

, j'ai changement plusieurs choses dans votre code, maintenant ça marche, amusez-vous;)

var url=""; 
var version = "RVR1960"; 
var verso = ""; 

$("div.post-body > b.verso").each(function(i){ 
    resultado = null; 
    verso = $(this).text(); 
    url = "http://query.yahooapis.com/v1/public/yql?"+"q=select%20*%20from%20html%20where%20url%3D%22"+encodeURIComponent("http://www.biblegateway.com/passage/?search="+verso+"&version="+version)+"%22&format=xml'&callback=?"; 

    $.getJSON(url,function(data){ 
     if(data.results[0]) 
     { 
      resultado = null; 
      resultado = $(data.results[0]).find("div.result-text-style-normal:first"); 
      resultado.find("h5, div, a").remove(); 
      $("<div class='cita'><span class='left'>&ldquo;</span>"+resultado.html()+"<p align='right'><b>"+verso+"</b></p>"+"<span class='right'>&rdquo;</span></div>").appendTo($("div.post-body > b.verso")[i]); 
     } 
     else 
     { 
      resultado = $("<p>Pasaje no encontrado.</p>"); 
     } 
    }); 
}); 
+0

Je suis venu à cette réponse aussi, et résolu d'autres problèmes, merci beaucoup. –