如何在parseJSON之后获取元素数据

时间:2015-03-17 10:36:45

标签: javascript php jquery json parsing

当我回显一个变量时,变量包含从数据库中获取的数据。

    $query = "Select cal_date, mfg_name, sales_amt, mkt_share 
              from (---here comes subquery--) 
              group by TO_DATE(cal_date, 'YYYYMMDD'), mfg_name 
              order by mfg_name, cal_date


    $data = json_encode($results);
    echo $data; die();  

输出结果如下。

    {"8":{
          "CAL_DATE":"01-APR-2013",
          "MFG_NAME":"AMS",
          "SALES_AMT":"1630",
          "MKT_SHARE":".01"
         },
     "9":{
          "CAL_DATE":"01-AUG-2012",
          "MFG_NAME":"TEVA",
          "SALES_AMT_USD":"876",
          "MKT_SHARE":".59"
         }
     }

我不知道为什么我会得到" 8" " 9"在每个元素数据之前。如何在警报中从此获取MFG_NAME。就像我尝试了下面的

var cdata = new Array();
cdata = <?php echo $data; ?>; 
var dlen    = cdata.length;
var mfg_name    = new Array();

for(var i=0 ; i<dlen; i++ )
{
    mfg_name[i]   = cdata[i].MFG_NAME;
}
alert(mfg_name);

我在警报中得到了空的结果。例如,如何在上面的提醒中获取AMS, TEVA?我是否必须执行parseJSON或如何获取它?

提前致谢...

2 个答案:

答案 0 :(得分:0)

因此,您的PHP正在输出JSON字符串,因为没有内容类型标头集。因此,您需要将其解析为JSON对象,然后循环访问键以访问值,如下所示。

var json = JSON.parse('{"8":{"CAL_DATE":"01-APR-2013","MFG_NAME":"AMS","SALES_AMT":"1630","MKT_SHARE":".01"},"9":{"CAL_DATE":"01-AUG-2012","MFG_NAME":"TEVA","SALES_AMT_USD":"876","MKT_SHARE":".59"}}');

for (var key in json) {
    alert (json[key]["MFG_NAME"]);
}

演示@ fiddle

答案 1 :(得分:0)

这对我有用:

cdata = '{"8":{"CAL_DATE":"01-APR-2013","MFG_NAME":"AMS","SALES_AMT":"1630","MKT_SHARE":".01"},"9":{"CAL_DATE":"01-AUG-2012","MFG_NAME":"TEVA","SALES_AMT_USD":"876","MKT_SHARE":".59"}}';
cdata = JSON.parse(cdata);
var mfg_name    = new Array();
var i = 0;
for(var key in cdata ){
   mfg_name[i]  = cdata[key].MFG_NAME;
   i++;
}
alert(mfg_name);

提醒AMS,TEVA