在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>'); 
    }); 
+0

这对解析只是一个简单的数据很好,但如果我想说,例如有id1显示id1和id2显示id2,什么是最好的方法? 顺便说一句,感谢您的回答:) – 2010-02-27 14:55:17

+0

那么,我不完全明白你在哪里使用该“过滤器”功能,或者你如何调用它。这看起来不错,但我认为我不会那样做。我更可能有一个函数,只需找到我想要的“id”值的元素,然后构建一个新对象来收集这些元素。 – Pointy 2010-02-27 14:58:06

+0

哦,等一下;抱歉,我必须失明 - 我现在看到了这个功能。让我想一下。 – Pointy 2010-02-27 14:58:46

我改变了下面的代码,以使其 “过滤”

$.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"; 
    }) 

的感谢!