如何使用AJAX从最少的几个XML条目中获取数据

时间:2016-12-08 05:00:59

标签: jquery ajax xml

我对jquery和ajax很新。我制作了一个XML文件,用于动态制作新闻页面。在我网站的其他页面上,我有一个从同一文件更新的新闻栏。目前,新闻栏遍历每个新闻项目。我想要的是它只采用了第一个(顶部)四个条目而不是每个条目。我无法找到与我尝试做的相关的语法示例。 感谢。

        $(document).ready(function(){
            $.ajax({
               type: 'GET',
                url: 'news/news.xml',
                dataTyper: 'xml',
                success: function(xml) {

                    $(xml).find('story').each(function(){                 
                        $('.news-lineup').append(
                            '<div class="news-item">' +
                                '<p class="news-item-date">' +
                                    $(this).find('date').text() +
                                '</p>' +
                                '<a href="news.html#' +
                                    $(this).find('link').text() +
                                    '">' +
                                    '<img src="images/'+
                                        $(this).find('imagefile').text() +
                                        '" class="news-story-bar-image">' +
                                    '<p class="news-item-title">' +
                                        $(this).find('title').text() +
                                    '</p>' +
                                '</a>' +
                                '<p class="news-item-blurb">' +
                                    $(this).find('blurb').text() +
                                '</p>' +
                            '</div>'
                        );                    
                    });
                }
            });
        });

3 个答案:

答案 0 :(得分:2)

虽然你的问题不明确,但我认为你正在寻找一个将前4个结果附加到新闻栏中的循环。您可以在所需数量的实体之后中断循环。

$(document).ready(function(){
        $.ajax({
           type: 'GET',
            url: 'news/news.xml',
            dataTyper: 'xml',
            success: function(xml) {
                var x=0;
                $(xml).find('story').each(function(){
                    x++;                 
                    $('.news-lineup').append(
                        '<div class="news-item">' +
                            '<p class="news-item-date">' +
                                $(this).find('date').text() +
                            '</p>' +
                            '<a href="news.html#' +
                                $(this).find('link').text() +
                                '">' +
                                '<img src="images/'+
                                    $(this).find('imagefile').text() +
                                    '" class="news-story-bar-image">' +
                                '<p class="news-item-title">' +
                                    $(this).find('title').text() +
                                '</p>' +
                            '</a>' +
                            '<p class="news-item-blurb">' +
                                $(this).find('blurb').text() +
                            '</p>' +
                        '</div>'
                    );                    
                });
                if(x==4){
                    return false;
                }
            }
        });
    });

答案 1 :(得分:1)

如果您只使用jquery,xml和ajax,那么您将在客户端获得完整的xml数据。要从xml中仅获取选择性数据,您需要在服务器端(PHP,JSP,Python ..)编写代码,该代码可以根据您的逻辑处理您的xml文件,并在客户端提供所需的数据。

作为参考,您可以参考http://www.w3schools.com/php/php_ajax_php.asp

在此文件中,您可以将xml文件转储到变量中,处理它并将处理后的数据发送到客户端,而不是在php文件中写入所有数据。

答案 2 :(得分:0)

我刚刚发现了slice命令,它也适用于数组。以下对原版的微小改动似乎同样有效:

$(xml).find('story').slice(0, 3).each(function(){
    //code here
});