2010-01-12 2 views
1

Я пытаюсь создать сценарий с использованием Yahoo YQL в веб-приложении. Скрипт просматривает текстовый абзац, а затем находит некоторые ссылки и добавляет текст в виде всплывающего окна. Все идет хорошо, пока мне не придется перебирать каждую ссылку с помощью класса «verso», после получения моего ответа он добавляет все ссылки в последний элемент списка.Ждите ответа getJSON

Вот Javascript код (переписан и упрощенный)

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

и вот мой 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> 

Я ценю всю помощь,

+1

Каков ваш ожидаемый результат и что на самом деле происходит? – mkoryak

+0

Я ожидаю, что скрипт добавит каждую ссылку к каждому элементу с классом «verse» соответственно. Вместо этого я получаю, что он добавляет все в элемент LAST моего цикла. –

ответ

3

Итак, у меня есть изменения несколько вещей в вашем коде, теперь это работает, получайте удовольствие;)

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

Я тоже пришел к этому ответу и решил некоторые другие проблемы, спасибо большое. –