【问题标题】:Wait for getJSON response等待 getJSON 响应
【发布时间】:2010-01-12 22:42:59
【问题描述】:

我正在尝试在网络应用程序中使用 Yahoo 的 YQL 制作脚本。该脚本查看一个文本段落,然后找到一些引用并作为弹出窗口附加到文本上。一切都很好,直到我必须使用类“verso”遍历每个引用,在得到我的响应后,它将所有引用附加到列表的最后一个元素中。

这是 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>

感谢所有帮助

【问题讨论】:

  • 您的预期结果是什么,实际发生了什么?
  • 我希望脚本将每个引用分别附加到每个带有“verse”类的元素。而不是我得到它附加在我每个循环的最后一个元素中。

标签: jquery ajax json getjson yql


【解决方案1】:

所以,我在您的代码中更改了几处,现在它可以工作了,玩得开心;)

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

【讨论】:

  • 我也来到了那个答案,并解决了一些其他问题,非常感谢。
猜你喜欢
  • 1970-01-01
  • 2017-01-03
  • 2020-09-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-28
  • 2018-11-02
  • 2011-11-17
相关资源
最近更新 更多