我正在开发一个由多个JSON源驱动的AJAX项目。我正在使用一个Feed创建一个类别列表,用于过滤来自第二个Feed的文章。
我的第一个Feed看起来像这样:
"value": [
{
"Id": "1ca44b5b-06ab-63fa-8375-ff00000b3273",
"Title": "Safety",
}, ...
]
我的第二个Feed看起来像这样:
value": [
{
"Id": "30b94b5b-06ab-63fa-8375-ff00000b3273",
"Title": "Test article",
"Body": "Test content",
"topics": [
"1ca44b5b-06ab-63fa-8375-ff00000b3273"
],
}, ...
]
第一个Feed是主题列表,第二个Feed是由这些主题标记的一组文章。我能够匹配GUID进行过滤很好,但问题是由于第二个Feed的限制我无法将标题“安全”拉入文章。我出于各种原因需要这个标题,主要是样式和将标题推送到页面URL。
我正在努力找到解决这个问题的最佳方法,以使其向前发展。基本上,我想根据我的第一个Feed找到将GUID与第二个Feed中的标题相关联的最佳方法。
以下是我如何拉动两个Feed:
Feed 1:
$('.category-filters').each(function(){
var $this = $(this);
$.ajax({
method:"GET",
url: '/api/stories/flat-taxa?$filter=TaxonomyId%20eq%20dca84b5b-06ab-63fa-8375-ff00000b3273',
data: { format:'json'},
context:$this
}).success(function(data){
var category = data.value;
var filter = [];
for (i = 0; i < category.length; i++) {
$this.append('<li><input type="checkbox" id="' + category[i].Id + '"><label for="' + category[i].Id + '">' + category[i].Title + '</label></li>');
}
});
});
Feed 2:
function storyCards(){
$.ajax({
method:"GET",
url: url,
data: { format:'json' },
context:$('.story-cards')
}).success(function(data){
var story = data.value;
for (i = 0; i < story.length; i++) {
$('.story-cards').append('<li class="item card-item"><div class="card"><div class="content"><h2>' + story[i].Title + '</h2>' + story[i].Summary + '</div><div class="card-footer"><a class="button" href="' + story[i].UrlName + '">' + story[i].ButtonText + '</a></div></div></li>');
}
});
}
希望这很有意义,很高兴在需要时提供更多详细信息。
答案 0 :(得分:1)
进行一些循环并将主题标题添加到文章中:
var obj1 = {
"value": [{
"Id": "1ca44b5b-06ab-63fa-8375-ff00000b3273",
"Title": "Safety",
}]
};
var obj2 = {
"value": [{
"Id": "30b94b5b-06ab-63fa-8375-ff00000b3273",
"Title": "Test article",
"Body": "Test content",
"topics": [
"1ca44b5b-06ab-63fa-8375-ff00000b3273"
],
}]
};
$.each(obj2.value, function(i, v) {
$.each(obj1.value, function(index, val) {
if (v.topics[0] == val.Id) {
obj2.value[i]['TopicName'] = val.Title;
}
});
});
console.log(obj2);
演示:https://jsfiddle.net/jrdn27rf/
在这种情况下,您可以执行以下操作:
function storyCards(){
$.ajax({
method:"GET",
url: url,
data: { format:'json' },
context:$('.story-cards')
}).success(function(data){
var story = data.value;
for (i = 0; i < story.length; i++) {
var categoryTitle = $('label[for="'+story[i].topics[0]+']"').text();
$('.story-cards').append('<li class="item card-item"><div class="card"><div class="content"><h2>' + story[i].Title + '</h2>' + story[i].Summary + '</div><p>'+categoryTitle +'</p><div class="card-footer"><a class="button" href="' + story[i].UrlName + '">' + story[i].ButtonText + '</a></div></div></li>');
}
});
}
答案 1 :(得分:1)
似乎是共享字典的好地方,您可以将GUID与标题匹配。
starttime