Ajax permet la récupération de données en arrière-plan sans interférer avec l'affichage et le comportement de l'application web. Cet article présente principalement la raison pour laquelle ajax obtient les données json comme non définies. Les amis intéressés par ajax peuvent se référer à
JavaScript asynchrone et XML (Ajax) est à l'origine d'une nouvelle génération de sites Web (le terme populaire est Web). 2.0) technologies clés. Ajax permet la récupération de données en arrière-plan sans interférer avec l'affichage et le comportement de l'application Web. Obtenez des données à l'aide de la fonction XMLHttpRequest, une API qui permet à JavaScript côté client de se connecter à un serveur distant via HTTP. Ajax est également la force motrice derrière de nombreux mashups, qui intègrent du contenu provenant de plusieurs endroits dans une seule application Web.
Généralement, lors du traitement de la valeur json envoyée depuis le serveur, nous la traiterons de deux manières :
1 La première consiste à utiliser la fonction eval(). var dataObj=eval("("+data+")");
//Convertir en objet json (remarque : les données sont des données json)
2. Utilisez l'objet Function pour l'analyse du retour. var json =(new Function("","return "+data))();
Mais quand je travaillais sur un projet aujourd'hui (le projet utilisait struts2), j'utilisais ces deux méthodes pour lire json, et le résultat était toujours indéfini. J'ai vérifié beaucoup d'informations sur Internet, mais la plupart d'entre elles n'ont pas pu être expliquées. Plus tard, j'ai trouvé un article dans lequel l'auteur a également rencontré cette situation. Sa solution était de déclarer la valeur de retour comme attribut json dans l'action. Après l'avoir testé sur son propre projet, cela a échoué, la solution a donc été de le transférer à nouveau. Ce qui suit est ma propre réflexion : bien que les données transmises depuis l'arrière-plan soient déclarées comme un attribut json, lorsqu'elles sont transmises à la réception, il s'agit en fait d'une chaîne, pas d'un objet json. À ce stade, nous devons traiter le. données en arrière-plan et convertissez-les en objet json. Obtenez ensuite la valeur en json. Mais parfois, la valeur transmise depuis l'arrière-plan n'est pas nécessairement une chaîne au format json standard. Bien que nous convertissions l'objet transmis depuis l'arrière-plan via l'une des deux méthodes précédentes, l'objet json converti à ce moment est en fait toujours une chaîne. chaîne json standard, et après l'avoir reconvertie, elle devient un objet json.
Ce qui suit fait partie du code :
result = JSONObject.fromObject(map).toString();//后台代码,将map转成json对象 success : function(result) {//前台返回值代码 var obj = eval("("+result+")"); //var data1 =(new Function("","return "+obj))(); var data1=eval("("+obj+")"); alert(data1.name); }
Résumé
Ce qui précède est l'analyse des raisons pour lesquelles ajax obtient des données json comme non définies introduites par l'éditeur. J'espère que cela sera utile à tout le monde ! !
Recommandations associées :
Comment implémenter des requêtes synchrones asynchrones dans l'utilisation d'AJAX
Comment JS natif implémente AJAX et JSONP
Les multiples méthodes d'Ajax pour le téléchargement de fichiers asynchrones
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!