2013-04-25 5 views
0

Я понимаю, мы можем использовать следующие для обработки с помощью простого AJAX JSON ответКак получить ключ/значение из ответа JSON

function onSuccess(response) { 
    console.log("Service call successful with response"+response); 
    $.each(response, function (key, value) { 
     console.log(key+" "+value); 

    }) ; 

Но, как обрабатывать в массив JSON ответ, как показано ниже? Функция

{ 
    "xyzs":[ 
     { 
     "xyz":{ 
      "id":"515f08380364db3bbe5a27f1", 
      "xyz_id":"320224817603309569" 
     } 
     }, 
     { 
     "xyz":{ 
      "id":"5161f9880364db3bbea86595", 
      "xyz_id":"321033680736886784" 
     } 
     } 
    ] 
} 

OnSuccess() не дает ожидаемой выходной id и xyz_id в консоли с выше ответ.

Есть ли какой-то for цикл в javascript, который я использую в функции onSuccess() для получения значений id и xyz_id?

ответ

1

Используйте это:

var response = { 
    "xyzs":[ 
     { 
     "xyz":{ 
      "id":"515f08380364db3bbe5a27f1", 
      "xyz_id":"320224817603309569" 
     } 
     }, 
     { 
     "xyz":{ 
      "id":"5161f9880364db3bbea86595", 
      "xyz_id":"321033680736886784" 
     } 
     } 
    ] 
}; 

$.each(response.xyzs, function() { 
    var cur = this.xyz; 
    console.log(cur.id, cur.xyz_id); 
}); 

DEMO:http://jsfiddle.net/abBcW/

+0

+1. Это сработало! спасибо за пример кода. Интересно, почему решение Кундана не сработало, только разница, он не использовал var cur = this.xyz – Watt

4

Вы можете попробовать это вместо:

$.each(response.xyzs, function (index, obj) { 
    console.log(obj.xyz.id+" "+obj.xyz.xyz_id); 
}) ; 

Надеется, что это поможет !!

+0

+1 для быстрого реагирования. Но, я не знаю, что случилось, я получаю две строки «неопределенного неопределенного» в консоли для данного JSON, о котором идет речь. Я все еще не ожидаю значения id и xyz_id – Watt

+0

@Watt, я пропустил узел ** xyz **, обновил свой ответ. –

0

В вашем случае. у вас есть объект json, а $ .each() применим к массиву json.

Таким образом, вы можете получить массив JSON по response.xyzs и можете прокручивать каждый элемент этого массива.

$.each(response.xyzs, function (key, value) { 
     console.log(key+" "+value); 
    }) ; 

Вот более ясный пример цикла цикла JSON.

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); 
});​ 
Смежные вопросы