javascript - 使用此功能未显示结果

标签 javascript jquery

我编写了以下函数来获取一些 RSS 提要数据。

这很有趣,因为脚本末尾的两个警报都会显示,但结果不会通过 jQuery::append() 附加到它的 div,我必须提到传递给附加函数的 ID 是完全正确。

    function generateTopNews() {
        // Manage RSS url
        var targetsURLs = new Array("http://www.jamejamonline.ir/rssfeed?code=01-10-95", "http://www.khorasannews.com/RSS.aspx?type=1", "http://www.tabnak.ir/fa/rss/1", "http://www.varzesh3.com/rss/");
        var logoURLs = new Array("images/jm_logo.png", "images/kh_logo.png", "images/tb_logo.png", "images/v3_logo.png");
        // Temp variables
        var resultArray = new Array();
        var rssCounter = 0;
        // RSS Loader
        for (var i = 0; i < targetsURLs.length; i++) {
            $.ajax({
                url:  "http://ajax.googleapis.com/ajax/services/feed/load?v=1.0&num=10&callback=?&q=" + encodeURIComponent(targetsURLs[i]),
                dataType: "json",
                success: function(data) {
                    var fetchedFeed = data.responseData.feed.entries;
                    for (var j = 0; j < fetchedFeed.length && j < 2; j++) {
                            // RSS HTML Template
                            var htmlContent = "<div class=\"col-md-4 col-sm-6\">";
                            htmlContent += "    <div class=\"panel panel-default\">";
                            htmlContent += "        <div class=\"panel-heading\">";
                            htmlContent += "            <img class=\"pull-left\" src=\"" + logoURLs[i] + "\" height=\"23px\" />";     
                            htmlContent += "            <p>" +  fetchedFeed[j].title + "<p>";     
                            htmlContent += "        </div>";
                            htmlContent += "        <div class=\"panel-body\">";                    
                            htmlContent +=              fetchedFeed[j].contentSnippet;
                            htmlContent += "       </div>";
                            htmlContent += "    </div>";
                            htmlContent += "</div>";
                            // Count up the RSS
                            resultArray[rssCounter++] = htmlContent;
                    }
                }
            });
        }
        // Start
        $("#rss-container").append("@Start");
        alert("@Start");
        // Append the results
        for (var i = 0; i < resultArray.length; i++) {
            $("#rss-container").append(resultArray[i]);
        }
        // End
        $("#rss-container").append("@End");
        alert("@End");
    }

最佳答案

由于ajax是异步的,您应该在成功事件中编写append()代码。否则 append() 在从服务器获取数据之前发生。

function generateTopNews() {
      // Manage RSS url
      var targetsURLs = new Array("http://www.jamejamonline.ir/rssfeed?code=01-10-95", "http://www.khorasannews.com/RSS.aspx?type=1", "http://www.tabnak.ir/fa/rss/1", "http://www.varzesh3.com/rss/");
      var logoURLs = new Array("images/jm_logo.png", "images/kh_logo.png", "images/tb_logo.png", "images/v3_logo.png");
      // Temp variables
      var resultArray = new Array();
      var rssCounter = 0;
      // RSS Loader
      for (var i = 0; i < targetsURLs.length; i++) {
          $.ajax({
              url: "http://ajax.googleapis.com/ajax/services/feed/load?v=1.0&num=10&callback=?&q=" + encodeURIComponent(targetsURLs[i]),
              dataType: "json",
              success: function (data) {
                  var fetchedFeed = data.responseData.feed.entries;
                  for (var j = 0; j < fetchedFeed.length && j < 2; j++) {
                      // RSS HTML Template
                      var htmlContent = "<div class=\"col-md-4 col-sm-6\">";
                      htmlContent += "    <div class=\"panel panel-default\">";
                      htmlContent += "        <div class=\"panel-heading\">";
                      htmlContent += "            <img class=\"pull-left\" src=\"" + logoURLs[i] + "\" height=\"23px\" />";
                      htmlContent += "            <p>" + fetchedFeed[j].title + "<p>";
                      htmlContent += "        </div>";
                      htmlContent += "        <div class=\"panel-body\">";
                      htmlContent += fetchedFeed[j].contentSnippet;
                      htmlContent += "       </div>";
                      htmlContent += "    </div>";
                      htmlContent += "</div>";
                      // Count up the RSS
                      $("#rss-container").append(htmlContent);
                  }
              }
          });
      }

  }

关于javascript - 使用此功能未显示结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22844350/

相关文章:

javascript - 将 jQuery 单击/拖动代码转换为 React

javascript - Django + Jquery

jquery - 如何使用jquery删除字符串中的字符串的一部分

javascript - 搜索引擎 (SEO) : do they see information if it appended with javascript?

javascript - Material ui 工具提示在移动设备上不起作用

javascript - 使用javascript更改文本框边框颜色

jquery - 在 HTML 帮助程序中使用 jQuery

javascript - 使用 javascript 将当前 URL 复制到新的警报窗口中

javascript - 仅使用年(没有月或日)与谷歌时间线图表

jquery - DIV(覆盖)在点击时滑出?