2010-02-27 4 views
1

Мне был предоставлен этот код раньше, но мне сложно провести синтаксический анализ правильных данных.разбор конкретных значений в JSON для ajax

У меня есть следующие JSON

{ flavors: [{"image":"images/bbtv.jpg", "desc":"BioBusiness.TV", "id":"1"},{"image":"images/grow.jpg", "desc":"Grow Staffing", "id":"2"}]} 

и я хочу, чтобы показывать только идентификатор: 1 или идентификатор: 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; 
} 

Однако этот код не возвращает ничего. Может ли кто-нибудь сказать мне, что мне не хватает?

Im довольно новый для JSON, Ajax, поэтому любая помощь будет принята с благодарностью.

Спасибо!

ответ

1

Почему бы не просто проверить «каждый» код?

$.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 show id1 и id2 show id2, какой был бы лучший подход? Кстати, спасибо за ваш ответ :) –

+0

Ну, я не совсем понимаю, где вы используете эту функцию «фильтр», или как вы ее называете. Это не выглядит неправильно, но я не думаю, что я сделаю это именно так; Я бы с большей вероятностью имел функцию, которая просто находила элементы с требуемыми значениями «id», а затем создавала новый объект для их сбора. – Pointy

+0

О, подождите; простите, я должен быть слепым - теперь я вижу функцию. Позвольте мне подумать минутку. – Pointy

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

спасибо!

Смежные вопросы