JSON 循环中只有 1 个结果
Only 1 result from JSON loop
有人可以解释为什么这只返回 1 个结果(应该有 4 个)。它只返回最新的帖子标题,我想在其中获取类别 (ID:121) 中的所有帖子标题,在本例中为四个。
<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');
});
}
相关文章:
- JavaScript循环无法正确计算/显示结果
- 将循环中的两个文本框相乘,并在第三个文本框上显示结果
- JavaScript-将for循环的多个结果推送到数组中
- 虽然循环只返回最终结果
- 使用函数for循环遍历对象以更改值,然后返回结果
- 为什么这个 fs.readFile 循环没有将其结果推送到我的数组
- 返回循环中调用的回调结果的串联
- 来自 JavaScript 循环的意外结果
- jQuery 循环 JSON 结果,对象作为值
- 嵌套在WHILE循环中的IF语句的结果混淆了我(Javascript)
- javascript循环遍历列表项,并在数组中返回结果
- for循环中的多个随机结果
- 我如何做一个纯Javascript foreach循环并打印出结果firebase
- 如何循环使用JSON(使用AngularJS)并将结果放入Javascript数组中
- While循环未将正确的结果推送到数组
- 而循环和回调返回不同的结果
- Javascript do/while循环显示意外结果
- 为什么我的循环会产生重复的结果
- 我如何知道最后一个异步函数何时在ob" for键中返回结果?循环
- 如何在jade中渲染json对象并通过结果循环