我对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>'
);
});
}
});
});
答案 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
});