2010-05-07 4 views
2

J'ai un problème pour renvoyer/traiter les données JSON lors de l'appel de la fonction $ .get(). Voici le code:
JQuery:

$.get("script.php?", 
     function(data) { 
      if (data.status) { 
       alert('ok'); 
      } else { 
       alert(data.error); 
      }    
    },'json'); 

PHP

if ($r) { 
    $ret = array("status"=>true); 
} else { 
    $ret = array("status"=>false,"error"=>$error); 
} 
echo json_encode($ret); 

C'est donc le code. Mais la réponse est toujours considérée comme une chaîne dans la jquery. data.status et data.error est undefined.

Répondre

1

Vous devez utiliser jQuery 1.4.x, sinon vous devez analyser les données renvoyées par vous-même.

data = JSON.parse(data); 
+0

merci! Je vais devoir passer le dernier joke pour rendre les choses plus faciles – shyam

4

Votre script PHP doit définir l'en-tête Content-type de la réponse à application/json, .: par exemple

header('Content-type: application/json'); 

Alternativement, vous pouvez dire jQuery qui va revenir JSON en utilisant l'option dataType. Ou utilisez simplement getJSON, ce qui fait exactement cela. :-)

Modifier Désolé, juste remarqué: Vous sont passer le paramètre dataType-get. Ma suggestion est de regarder attentivement le texte de la réponse: est-ce vraiment JSON valide? (This site peut aider.) A partir de votre cité PHP, il semble que ce devrait être, mais s'il y avait une autre sortie avant ou après ...