2013-04-27 2 views
0

У меня есть PHP-файл, который только возвращает массив с драйверами и URL:Как получить значения из массива json с помощью javascript?

{"drivers":[{"marco":[0],"luigi":[123],"Joan":[2444],"George":[25]}, {"marco":[23],"luigi":[3],"Joan":[244],"George":[234]}],"url":"google.es"} 

Является ли правильно структурированную JSON? И я пытаюсь получить результат с помощью JQuery и AJAX таким путем:

$.getJSON('calculate.php&someparams=123', function(data) { 
    alert("url - " + data.url); 
    var arr = data.drivers; 

    for (var i = 0; i < arr.length; i++) { 
     alert(arr[i] + " - " + arr[i][0]); 
    } 
}); 

Я вижу первое предупреждение() с URL, но второй один не работает ... Что я делать не так?

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

+0

_ "Является ли json правильно структурированным?" _ Вы имеете в виду "это действительно json"? Поскольку структура выглядит действительной в смысле отсутствия синтаксических ошибок, но является ли она «правильной», зависит от того, что вы хотите ее представить. (Хотя, сказав, что я предлагаю, чтобы помещение каждого номера в его собственный массив не было необходимым, если иногда невозможно, чтобы имя имело более одного номера, связанного с ним.) – nnnnnn

ответ

1

drivers не является массивом, это объект, вы используете $.each для итерации элементов объекта.

$.getJSON('calculate.php&someparams=123', function(data) { 
    $.each(data.drivers, function(key, value){ 
     $.each(value, function(key, value){ 
      console.log(key, value); 
     }); 
    }) 
}); 
+0

спасибо! но извините, я обновил json главного сообщения ... что это было бы тогда? – harrison4

+0

@ Joëlle Какой результат вы ищете –

+0

ok! это оно! Большое спасибо! – harrison4

0

Это объект, а не массив. Он назвал свойства, а не числовые индексы.

Вам нужно, чтобы for in loop переместил объекты.

0

drivers - это объект. Не массив.

Как насчет этого?

var json_string = '{"drivers":{"marco":[0],"luigi":[123],"Joan":[2444],"George":[25]},"url":"google.es"}'; 
var obj = jQuery.parseJSON(json_string); 
alert(obj.url); 
Смежные вопросы