Jquery - Uncaught TypeError: Impossible d'utiliser un 'dans' l'opérateur de recherche pour '324' dans
Je suis en train d'envoyer une requête Get par ajax et de sortie de données json renvoyé par le serveur au format html.
Mais, j'ai eu cette erreur.
Uncaught TypeError: Cannot use 'in' operator to search for '324' in
[{"id":50,"name":"SEO"},{"id":22,"name":"LPO",}]
C'est mon code qui envoie une requête Get fichier php en ajax.
Lorsque j'utilise $.chaque méthode, il reçois le message d'erreur que j'ai montré ci-dessus.
parentCat.on('change', function(e){
parentCatId = $(this).val();
$.get(
'index.php?r=admin/post/ajax',
{"parentCatId":parentCatId},
function(data){
$.each(data, function(key, value){
console.log(key + ":" + value)
})
}
)
})
C'est mon code PHP qui retourne un résultat de requête au format json.
public function actionAjax(){
$parentCatId=$_GET['parentCatId'];
$catData = Category::getTargetCategoryData($parentCatId);
echo CJSON::encode($catData);
Yii::app()->end();
}
données json retourné par ce php, c'est comme cela.
[{"id":50,"name":"SEO"},{"id":22,"name":"LPO",}]
Quelqu'un sait comment résoudre ce problème?
Merci de m'aider.
Merci d'avance 🙂
- D'où vient ce message d'erreur vient?
- pouvez-vous ajouter un
console.log(data)
avant laeach
stmt et de voir ce qui est écrit dans la console - Merci!!!! mon problème a résoudre maintenant 🙂
- Cela peut aider quelqu'un atterri ici, mais mon problème a été en utilisant
$.each('selector')...
au lieu de$('selector').each(...
Vous devez vous connecter pour publier un commentaire.
Vous avez une chaîne JSON, pas un objet. Dire jQuery que vous vous attendez à une réponse JSON et il va l'analyser pour vous. Soit utiliser $.getJSON au lieu de $.obtenez de l', ou de passer le type de données de l'argument de
$.get
:Vous pouvez également utiliser
$.parseJSON(data)
qui explicite convertir une chaîne thats venir à partir d'un script PHP pour un véritable tableau JSON.Si vous êtes l'extraction de JSON, utilisez $.getJSON() de sorte qu'il convertit automatiquement au format JSON à un Objet JS.
J'ai corrigé une erreur similaire en ajoutant le type de données json comme suit:
Et dans mon contrôleur, j'ai dû utiliser des guillemets autour de toutes les chaînes comme (note: ils ont échappé en java):
Donc, vous pouvez essayer d'utiliser des guillemets autour de vos numéros si elles sont utilisées comme des chaînes de caractères (et supprimer la dernière virgule):
Utilisation getJSON
Détail regardez ici http://api.jquery.com/jQuery.getJSON/