在JSON中为ajax解析特定值

时间:2010-02-27 14:49:41

标签: jquery ajax json parsing

我之前获得了此代码,但很难解析正确的数据。

我有以下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代码

$.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的新手,所以任何帮助都会非常感激。

谢谢!

2 个答案:

答案 0 :(得分:1)

为什么不直接检查“每个”代码?

  $.each(data.flavors, function(i,item){
      if (item.id > 2) return;
      $('#flavor-detail div').append('<ul><li><p>' + item.desc + '</p></li></ul>');
  });

答案 1 :(得分:0)

我更改了以下代码,使其“可过滤”

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

谢谢!