json编码2维数组

时间:2013-02-27 22:14:49

标签: php javascript jquery

我在php中有以下内容:

$query = mysql_query($sql);
$rows = mysql_num_rows($query); 
$data['course_num']=$rows;
$data['course_data'] = array();
while ($fetch = mysql_fetch_assoc($query) )
{

    $courseData = array(
    'course_name'=>$fetch['course_name'],
    'training_field'=>$fetch['training_field'],
    'speciality_field'=>$fetch['speciality_field'],
    'language'=>$fetch['language'],
    'description'=>$fetch['description'],
    'type'=>$fetch['type'],
    );

    array_push($data['course_data'],$courseData);
}

echo json_encode($data);

当我在jquery中收到此脚本的结果时(使用post)

我使用以下方式登录:

console.log(data['course_data']);

,输出为:

[Object { course_name="Introduction to C++",  training_field="Engineering" ,  speciality_field="Software",  more...}]

但我似乎无法弄清楚如何访问元素。

我试过

data['course_data'].course_name

data['course_data']['course_name']

没有任何效果。任何想法

5 个答案:

答案 0 :(得分:1)

您应该在第一个数组中指定索引

data['course_data'][0]['course_name'];

如果你将第一个数组定义为变量而不是数组中的变量

,那么你可以做得更好

答案 1 :(得分:1)

当您array_push($data['course_data'],$courseData);实际将$courseData放在$data['course_data'][0]时,您将在data['course_data'][0]['course_name']中使用JavaScript访问它。

如果您只打算获得一个结果,而不是array_push($data['course_data'],$courseData);,那么您应该只指定$data['course_data'] = $courseData。否则,你应该如此迭代data['course_data']

for (i in data['course_data']) {
  console.log(data['course_data'][i]['course_name']);
}

答案 2 :(得分:0)

$data['course_data'][0]['course_name'] 

应该做的伎俩。如果没有,请发送var_dump($ data)

的输出

答案 3 :(得分:0)

假设PHP代码正确,您将收到如下的JSON数据:

{
    "course_num":34,
    "course_data":[
        {
            "course_name":"name_value",
            ....
        },
        ....etc (other object based on SQL result)
    ]
}

因此,如果您想访问结果总数:

data.course_num

如果要访问结果列表的第一个元素:

data.course_data[0]

如果要访问结果列表中第一个元素的名称:

data.course_data[0].course_name

data.course_data[0]['course_name']

答案 4 :(得分:0)

使用jquery的parseJSON方法从json对象中获取所有好东西......

http://api.jquery.com/jQuery.parseJSON/