Как читать данные из объекта JSON - PullRequest
0 голосов
/ 30 января 2011

У меня есть PHP-скрипт, который выбирает некоторые данные из mysql и добавляет их в следующую строку:

$json_arr[] = array ('date'=>$human_date,'weight'=>$data['weight']);

Когда я запускаю сервер с PHP4, я использую скрипт Services_JSON (http://pear.php.net/pepr/pepr-proposal-show.php?id=198) для JSON-ify данных:

$json = new Services_JSON();
echo $json->encode($json_arr);

В файле JS я хочу показать все веса и даты:

$.getJSON('ajax/getweights.php', {userid: userid}, function(data) { 

  $.each(data, function(k, v) {
    alert(v + ': ' v);
  });
});

Как бы то ни было, когда я запускаю скрипт, я не получаю желаемого результата, например, 2011-01-10: 90,2011-01-15: 92, 2011-01-18: 89.

Я довольно новичок в jQuery, и я искал ответы в сети, и я попытался выяснить, как читать эти данные - я надеюсь, что кто-то может мне помочь:

Ответы [ 2 ]

1 голос
/ 30 января 2011

Предполагая, что сервер отправляет данные в следующем формате:

[ { date: '2011-01-10:90', weight: '1' }, 
  { date: '2011-01-15:92', weight: '2' }, 
  ...
]

Вы можете:

$.each(data, function(k, v) {
    alert('date: ' + v.date + ' | weight: ' + v.weight);
});
0 голосов
/ 30 января 2011

Более простой способ добиться этого:

$json_arr[] = array(
  'date' => $human_date,
  'weight' => $data['weight']
);

$json = new Services_JSON();
echo 'processData(' . $json->encode($json_arr) . ')';

И JavaScript:

// Callback function which processes the data
function processData(data) {
  for(var i = 0; i < data.length; i++)
    alert(data[i].date + ', ' + data[i].weight);
}

// Here we import the data
var s = document.createElement('script');
s.src = 'ajax/getweights.php';
document.body.appendChild(s);
...