0

我在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']

没有任何效果。有任何想法吗

4

5 回答 5

1

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

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

如果您将第一个数组定义为变量而不是数组中的变量,您可以做得更好

于 2013-02-27T22:24:05.893 回答
1

当您array_push($data['course_data'],$courseData);实际使用$courseData$data['course_data'][0],因此您可以在 JavaScript 中以data['course_data'][0]['course_name'].

如果你只打算得到一个结果,而不是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']);
}
于 2013-02-27T22:24:12.073 回答
0
$data['course_data'][0]['course_name'] 

应该做的伎俩。如果不是,请发送 var_dump($data) 的输出

于 2013-02-27T22:23:58.720 回答
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']
于 2013-02-27T22:24:07.153 回答
0

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

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

于 2013-02-27T22:24:24.203 回答