2011-10-15 5 views
0

J'ai une commande PHP qui aime ça.PHP crée un JSON qui ajax ne peut pas lire

$query = "SELECT * FROM $table WHERE user_id = 0"; 
    $results = mysql_query($query)or die(mysql_error()); 
    while($row = mysql_fetch_assoc($results)){ 

    $values []= $row; 

    } 
    echo json_encode($values); 

Cela crée un tableau JSON comme celui-ci

[{"id":"1","name":"amazon.com","url":"http:\/\/amazon.com","time":"5","credits":"0","user_id":"0"},{"id":"2","name":"google.com","url":"http:\/\/google.com","time":"4","credits":"0","user_id":"0"}] 

Ce tableau JSON que devient une partie d'un texte de réponse ajax sur une autre page.

var ajaxd = ajax(); 
     ajaxd.onreadystatechange = function(){ 

     if(ajaxd.readyState == 4){ 
     var nse = eval('('+ajaxd.responseText+')'); 
      alert(nse['url']); 
     } 
     } 

Le problème est .. L'alerte est toujours indéfinie. Qu'est-ce que je fais mal?

+0

Qu'est-ce show de débogage de base - ne resposeText contient rien? Avez-vous des erreurs? –

+0

Cela n'a rien à voir avec mysql. Vous pouvez créer ce tableau en utilisant les données extraites de mysql, mais après cela, c'est purement un tableau PHP. –

Répondre

3

la structure la plus externe contenue dans le json résultant est une liste; Cela est logique car la plupart des données renvoyées à partir d'une base de données sont constituées d'un ensemble de lignes. Vous voulez sans doute accéder à la « url » de la première ligne:

nse[0]["url"] 

Ou peut-être vous avez vraiment besoin de faire quelque chose avec chaque ligne:

for (i = 0; i < nse.length(); ++i) 
{ 
    row = nse[i]; 
    alert(row['url']); 
} 
+0

Fonctionne! Merci encore Mr TokenMacGuy – mbejda

+1

Juste TokenMacGuy va bien; Mr TokenMacGuy est mon père ~ _ ^ – SingleNegationElimination

2

Vous avez un tableau contenant un objet, pas un objet ordinaire.

alert(nse[0]['url'])