在JSON中解析ajax的特定值
问题描述:
我之前得到了这个代码,但我很难分析正确的数据。在JSON中解析ajax的特定值
我有以下的JSON
{ flavors: [{"image":"images/bbtv.jpg", "desc":"BioBusiness.TV", "id":"1"},{"image":"images/grow.jpg", "desc":"Grow Staffing", "id":"2"}]}
,我想只显示ID:1或ID:2。
我对阿贾克斯
下面的代码$.ajax({
type: "POST",
url: "foodservice/all.js",
dataType: "json",
cache: false,
data: {"flavors": filterId(flavors, 'a')},
contentType: "application/json",
success: function(data) {
$('#flavor-detail').html("<div/>");
$.each(data.flavors, function(i,item){
$('#flavor-detail div').append('<ul><li><p>' + item.desc + '</p></li></ul>');
});
}
});
和下面的函数通过JSON对象
function filterId(obj, filteredId) {
var resultObj = $.extend({},obj);
for (var i in obj) {
if (obj.hasOwnProperty(i)) {
if (obj[i].id && obj[i].id !== filteredId) {
delete obj[i];
}
}
}
return resultObj;
}
然而过滤,该代码不返回任何东西。 有人能告诉我我缺少什么吗?
我很新的JSON,Ajax所以任何帮助将不胜感激。
谢谢!
答
为什么不检查“每个”代码?
$.each(data.flavors, function(i,item){
if (item.id > 2) return;
$('#flavor-detail div').append('<ul><li><p>' + item.desc + '</p></li></ul>');
});
答
我改变了下面的代码,以使其 “过滤”
$.ajax({
type: "GET",
url: "foodservice/all.js",
dataType: "json",
cache: false,
contentType: "application/json",
success: function(data) {
$('#flavor-detail').html("<div/>");
$.each(data.flavors, function(i,item){
if (item.id != flavorid) return;
$('#flavor-detail div').append('<ul><li><p>' + item.desc + '</p></li></ul>');
});
}
});
,并为每个链接来改变输出,
$('#amare').click(function(){
flavorid = "1";
});
$('#sec').click(function(){
flavorid = "2";
})
的感谢!
这对解析只是一个简单的数据很好,但如果我想说,例如有id1显示id1和id2显示id2,什么是最好的方法? 顺便说一句,感谢您的回答:) – 2010-02-27 14:55:17
那么,我不完全明白你在哪里使用该“过滤器”功能,或者你如何调用它。这看起来不错,但我认为我不会那样做。我更可能有一个函数,只需找到我想要的“id”值的元素,然后构建一个新对象来收集这些元素。 – Pointy 2010-02-27 14:58:06
哦,等一下;抱歉,我必须失明 - 我现在看到了这个功能。让我想一下。 – Pointy 2010-02-27 14:58:46