JSON 循环只有 1 个结果
Only 1 result from JSON loop
有人可以解释一下为什么只返回 1 个结果(应该有 4 个)。它只返回最新的 post 标题,我想在其中获取类别 (ID: 121) 中的所有 post 标题,在本例中是四个。
<script type="text/javascript">
var posturl = "http://www.tropical420.com/api/get_posts/?posts_per_page=-1";
$.ajax({
type: 'GET',
url: posturl,
complete: function(){
},
success: function (data) {
var response = data; //JSON.parse(data);
//loop through posts
for(var i = 0; i != response.posts.length; i++) {
//get each element in the array
var post = response.posts[i];
// post vars
var postTitle = post.title;
var postContent = post.content;
var postCategory = post.categories[i].id;
// output stuff so we can see things
if (postCategory == '121') {
$("#post").append(postTitle + "<br />").trigger('create');
}
}
},
error:function (xhr, ajaxOptions, thrownError) {
alert("Error");
}
});
</script>
<div id="post"></div>
您遇到的问题是您没有遍历所有类别,而只是引用与您的帖子数组相同的索引。您应该像这样遍历所有类别
var postCategories= post.categories;
for (var postCategoryIndex in postCategories)
{
var postCategory = postCategories[postCategoryIndex].id;
if (postCategory == '121') {
$("#post").append(postTitle + "<br />").trigger('create');
}
}
返回的JSON确实包含49个帖子,如果你试过就会知道console.log(response.posts.length)
sanfor 已经指出了你代码中的逻辑错误,但是你的整个回调函数可以写得更干净,像这样:
function (data) {
data.posts.filter(function (post) {
return post.categories.filter(function (cat) { return cat.id === '121'; });
}).forEach(function (post) {
$("#post").append(post.title + "<br />").trigger('create');
});
}
有人可以解释一下为什么只返回 1 个结果(应该有 4 个)。它只返回最新的 post 标题,我想在其中获取类别 (ID: 121) 中的所有 post 标题,在本例中是四个。
<script type="text/javascript">
var posturl = "http://www.tropical420.com/api/get_posts/?posts_per_page=-1";
$.ajax({
type: 'GET',
url: posturl,
complete: function(){
},
success: function (data) {
var response = data; //JSON.parse(data);
//loop through posts
for(var i = 0; i != response.posts.length; i++) {
//get each element in the array
var post = response.posts[i];
// post vars
var postTitle = post.title;
var postContent = post.content;
var postCategory = post.categories[i].id;
// output stuff so we can see things
if (postCategory == '121') {
$("#post").append(postTitle + "<br />").trigger('create');
}
}
},
error:function (xhr, ajaxOptions, thrownError) {
alert("Error");
}
});
</script>
<div id="post"></div>
您遇到的问题是您没有遍历所有类别,而只是引用与您的帖子数组相同的索引。您应该像这样遍历所有类别
var postCategories= post.categories;
for (var postCategoryIndex in postCategories)
{
var postCategory = postCategories[postCategoryIndex].id;
if (postCategory == '121') {
$("#post").append(postTitle + "<br />").trigger('create');
}
}
返回的JSON确实包含49个帖子,如果你试过就会知道console.log(response.posts.length)
sanfor 已经指出了你代码中的逻辑错误,但是你的整个回调函数可以写得更干净,像这样:
function (data) {
data.posts.filter(function (post) {
return post.categories.filter(function (cat) { return cat.id === '121'; });
}).forEach(function (post) {
$("#post").append(post.title + "<br />").trigger('create');
});
}