2013-02-27 5 views
0

je donne les résultats suivants en php:JSON encodage 2 tableau de dimension

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

quand je reçois le résultat de ce script dans jquery (à l'aide post)

-je me connecter à l'aide:

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

et la sortie est la suivante:

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

Mais je n'arrive pas à comprendre comment accéder aux éléments.

J'ai essayé

data['course_data'].course_name 

data['course_data']['course_name'] 

Rien n'a fonctionné. Toutes les idées

Répondre

1

Lorsque vous array_push($data['course_data'],$courseData); vous mettez effectivement $courseData à $data['course_data'][0] et donc vous y accéder en JavaScript comme data['course_data'][0]['course_name'].

Si vous avez seulement l'intention d'avoir un résultat, au lieu de array_push($data['course_data'],$courseData);, vous devez simplement spécifier $data['course_data'] = $courseData. Dans le cas contraire, vous devez itérer sur data['course_data'] comme ceci:

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

devrait faire l'affaire. Sinon s'il vous plaît envoyer la sortie de var_dump ($ data)

+0

Je pense que cela est un problème JS, pas un PHP – Zim84

1

Vous devez spécifier l'index dans le premier tableau, par exemple,

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

que vous pouvez faire mieux si vous aviez défini le premier tableau comme variable ne une variable dans un tableau

0

si l'on suppose le code PHP est correct, vous recevrez des données JSON comme:

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

donc, si vous voulez accéder au nombre total du résultat:

data.course_num 

Si vous souhaitez accéder au premier élément de la liste des résultats:

data.course_data[0] 

Si vous souhaitez accéder au nom du premier élément de la liste des résultats:

data.course_data[0].course_name 

ou

data.course_data[0]['course_name']