javascript - 使用 AJAX 和 jQuery 填充 div

标签 javascript jquery ajax xml rss

嘿,我正在为计算科学学位做作业,我必须使用 AJAX 和 jQuery 从 rss feed .xml 文件中提取信息。

这是我的网站布局: https://i.gyazo.com/023f1e02f5d310ae8e0250874b4056da.png

这是上面布局图片中显示的 div 的 html 的一部分:

<section id="world" class="world-section">
    <div class="container">
        <div class="row">
            <div class="col-lg-12">
                <h1>World News</h1>
                <div class="col-lg-12">
                    <div class="row">
                        <div class="news-container">
                            <h2 id="heading1">item 1 title</h2>
                            <p>
                                item 1 description
                            </p>
                            <p>
                                <a class="btn" href="#">View full article</a>
                            </p>
                        </div>
                        <div class="news-container">
                            <h2>item 2 title</h2>
                            <p>
                                item 2 description
                            </p>
                            <p>
                                <a class="btn" href="#">View full article</a>
                            </p>
                        </div>
                        <div class="news-container">
                            <h2>item 3 title</h2>
                            <p>
                                item 3 description
                            </p>
                            <p>
                                <a class="btn" href="#">View full article</a>
                            </p>
                        </div>
                    </div>
                    <div class="row">
                        <div class="news-container">
                            <h2 id="heading1">item 4 title</h2>
                            <p>
                                item 4 description
                            </p>
                            <p>
                                <a class="btn" href="#">View full article</a>
                            </p>
                        </div>
                        <div class="news-container">
                            <h2>item 5 title</h2>
                            <p>
                                item 5 description
                            </p>
                            <p>
                                <a class="btn" href="#">View full article</a>
                            </p>
                        </div>
                        <div class="news-container">
                            <h2>item 6 title</h2>
                            <p>
                                item 6 description
                            </p>
                            <p>
                                <a class="btn" href="#">View full article</a>
                            </p>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
    </div>
</section>

这是我当前从.xml中提取数据的代码,尽管它从.xml中找到所有项目,然后将所有标题附加到heading1中,而我想将第一个项目标题放在heading1中,以及标题2中的第二个,依此类推

      $(document).ready(function()
  {
    $.ajax({
      type: "GET",
      url: "news.xml",
      dataType: "xml",
      cache: false,
      success: parseXml
    });
  });

  function parseXml(myXml)
  {
    $(myXml).find("item").each(function()
    {
      $("#heading1").append("<p>" + $(this).find("title").text() + "</p>");

    });
  }

现在我确信您可以看到我想要完成的任务,但无论如何我都会解释一下。

我希望能够从 rss feed 中获取项目,并将它们放在自己单独的 div 中,因此每个 div 都包含自己的项目。我的问题是我不确定如何实现这一目标,我希望有人可以提供帮助。

谢谢,杰森!

更新:

目前: https://i.gyazo.com/2228fe9b78b5821d9f6ea137f5fac74c.png

我终于成功了!这是我使用的代码:

      $(document).ready(function()
  {
    $.ajax({
      type: "GET",
      url: "world-news.xml",
      dataType: "xml",
      cache: false,
      success: parseXml
    });
  });

  function parseXml(myWorldXml)
  {
    $(myWorldXml).find("item").each(function()
    {
      $("#world-news-container-row").append("<div class='news-container'>" + "<p class='news-heading'>" + "<a href='" + $(this).find("link").text() + "'>" + $(this).find("title").text() + "</a>" + "</p>" + "<p class='news-content'>" + $(this).find("description").text() + "</p>" + "</div>");
    });
  }

最佳答案

您的思路是正确的,但您需要先解析 XML,然后才能使用 jQuery 进行查询。 https://api.jquery.com/jQuery.parseXML/

您还需要动态创建和附加新闻容器元素,根据需要添加行。

function parseXml(myXml){
    var $parsedXml = $($.parseXML(myXml)); // jQuery object from parsed XML
    $parsedXml.find("item").each(function(index){
        // every 3rd item (including the first) create a new row
        var $row;
        if(index % 3 == 0){
            $row = $("<div class='row'></div>");
            $("#container-for-rows").append($row);
        } else {
            $row = $(".row").last();
        }

        var $newEl = $("<div class='news-container'></div>");
        $newEl.append("<p>" + $(this).find("title").text() + "</p>");
        $newEl.append("<p><a class='btn' href='#'>View Full Article</a></p>");

        $row.append($newEl);
    }
}

关于javascript - 使用 AJAX 和 jQuery 填充 div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34189692/

相关文章:

javascript - 根据条件检查数据库结果

javascript - 无法清除临时存储

javascript - Bootstrap LightBox Gallery 包含许多相册

javascript - 为什么我不能点击输入?

javascript - 正则表达式用单个空格替换多个空格

javascript - 在服务器端脚本中的ajax调用中访问jquery数据变量

javascript - 方法 piSession.buildPageInteractionSession 无效

javascript - 在 angularjs 中预取模板有什么好处吗?

javascript - 无需点击即可调用函数

jquery - 混淆 AJAX POST