2013-12-25 2 views
16

У меня есть страница PHP, от которого я получаю ответ в формате JSON:Как перебрать json-массив в jquery?

[{'com':'something'},{'com':'some other thing'}] 

Я хочу, чтобы цикл его и добавить друг к DIV.

Это то, что я пробовал:

var obj = jQuery.parseJSON(response); 
$.each(obj.com, function(key,value) { 
    alert(key+':'+value); 
} 

Это предупреждает как undefined, а также ответ является JSON массив ..

Пожалуйста, помогите.

+0

попробовать предупреждение (это); – KoIIIeY

+0

@KoIIIeY не показывает никаких предупреждений .. –

ответ

37

Ваш массив имеет ключи по умолчанию (0,1), который магазин объект {'com':'some thing'} использование:

var obj = jQuery.parseJSON(response); 
$.each(obj, function(key,value) { 
    alert(value.com); 
}); 
+0

В любом случае я могу исчезать каждый? Я использовал '.hide(). FadeIn (800);' при добавлении, но он полностью исчезает сразу, возможно ли затухать 1 на 1? –

+0

Вы должны переустановить событие ($ (...). Bind ("") Или attachEvent()) после (до предоставления контроля пользователю), добавляя любой элемент. –

+0

Я понял, я спрятал все divs, а затем сделал затухание на каждом, так или иначе спасибо: D –

2

Вы итерация через undefined значения, то есть com свойства объекта массива, вы должны перебирать сам массив:

$.each(obj, function(key,value) { 
    // here `value` refers to the objects 
}); 

отметить также, что JQuery разумно пытается разобрать отправленное JSON, вероятно, вы не нужно разбирать ответ. Если вы используете $.ajax(), вы можете установить dataType на json, который сообщает jQuery разбора JSON для вас.

Если он по-прежнему не работает, проверьте консоль браузера на предмет устранения неполадок.

+0

Ничего не происходит, не отображается предупреждение .. –

7

Попробуйте это:

var data = jQuery.parseJSON(response); 
$.each(data, function(key, item) 
{ 
    console.log(item.com); 
}); 

или

var data = $.parseJSON(response); 

$(data).each(function(i,val) 
{ 
    $.each(val,function(key,val) 
    { 
      console.log(key + " : " + val);  
    }); 
}); 
+0

Циклы, но показывает '[object, object]' также я получаю json через вызов ajax –

2
var data=[{'com':'something'},{'com':'some other thing'}]; 
$.each(data, function() { 
    $.each(this, function(key, val){ 
    alert(val);//here data 
     alert (key); //here key 

    }); 
}); 
1

вам может получить пару значений ключа как

<pre> 
function test(){  
var data=[{'com':'something'},{'com':'some other thing'}];  
$.each(data, function(key,value) {  
alert(key); 
alert(value.com);  
});  
} 
</pre> 
+0

Просьба также добавить некоторые пояснения к вашему ответу. Благодаря! – Sampada

1

Попробуйте это:

for(var i = 0; i < data.length; i++){ 
    console.log(data[i].com) 
} 
0

попробовать это

var events = []; 

alert(doc); 
var obj = jQuery.parseJSON(doc); 

    $.each(obj, function (key, value) { 

    alert(value.title); 

});

0
var data = [ 
{"Id": 10004, "PageName": "club"}, 
{"Id": 10040, "PageName": "qaz"}, 
{"Id": 10059, "PageName": "jjjjjjj"} 
]; 

$.each(data, function(i, item) { 
    alert(data[i].PageName); 
});​ 

$.each(data, function(i, item) { 
    alert(item.PageName); 
});​ 

Или же Вы можете попробовать этот метод

var data = jQuery.parseJSON(response); 
$.each(data, function(key,value) { 
    alert(value.Id); //It will shows the Id values 
}); 
Смежные вопросы