2009-10-12 45 views
1

我的问题:我如何解析一个json数组?解析包含sql数组的json数组

我发送这样的:

$data= mysql_fetch_array($r); 
header('Content-type: application/json'); 

?>    
{ 
    "check": "<?php echo $check?>", 
    "productcode": "<?php echo $code?>", 
    "values": [<?php echo $data?>] 
} 
<?php 

在阿贾克斯我做这个单一数值的,如果我想访问数组我做这样的事,工作正常

success: function(data,textStatus){ 
    //return values 
    identification=data.check; 

我得到undefined

value=data.values[1]; 

我在做什么错?

+0

叶赫,昨天听说 我真的不想得罪任何人。 对不起,我从来没有注意到左边的那些东西。从现在开始我会这样做。起初我真的不知道为什么我会冒犯任何人,因为我总是说谢谢。 – Richard 2009-10-12 12:39:32

回答

1

您需要编码您的数组作为JSON得到JSON,太:

{ 
    "check": "<?php echo $check?>", 
    "productcode": "<?php echo $code?>", 
    "values": [<?php echo json_encode($data); ?>] 
} 

最简单的方法可能是把一切都在一个PHP数组并将其序列化为JSON:

$output = array(
    "check" => $check, 
    "productcode" => $code, 
    "values" => $data 
); 

echo json_encode($output); 

然后您可以确定它正在被正确编码。

+0

谢谢,你可以评论mysql_NUM,我仍然可以通过名称获取值,然后,在Ajax成功函数。 – Richard 2009-10-12 12:29:51

+0

您可以使用返回关联数组的mysql_fetch_assoc。这意味着,您可以通过JavaScript中的名称(而不是其索引)访问行中的列。只要检查结果,然后你会看到它的作用。 – Daff 2009-10-12 12:53:28

+0

对于msql_fetch_array,关联是默认的,因为我通过名称获得了结果,或者我从@RC获得了下面的注释。 – Richard 2009-10-12 14:21:00

0
$data= mysql_fetch_array($r, MYSQL_NUM); 

可以解决问题。

这将有助于让你在AJAX部分

+0

那么它是什么知道,一个asociative? 是关联不好解析? – Richard 2009-10-12 12:24:41

+0

根据文档,这是关联和num – 2009-10-12 13:03:20

1

试试这个:

$data= mysql_fetch_array($r); 
header('Content-type: application/json'); 

$json = array(
    'check' => $check, 
    'productcode' => $code, 
    'values' => $data 
    ); 

print json_encode($json); 

它比手动打印JSON更整洁。 json_encode将PHP数组转换为json字符串。