如何从JSON对象读取数据

时间:2011-01-30 09:54:43

标签: php loops jquery getjson

我有一个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 个答案:

答案 0 :(得分:1)

假设服务器以下列格式发送数据:

[ { 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);
});

答案 1 :(得分:0)

更容易实现这一目标:

$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);