Maison  >  Article  >  interface Web  >  La différence et l'utilisation entre json et jsonp

La différence et l'utilisation entre json et jsonp

一个新手
一个新手original
2017-10-02 09:44:221496parcourir

La différence et les diverses utilisations de json et jsonp
Bien qu'il n'y ait qu'une seule lettre de différence entre JSON (JavaScript Object Notation) et JSONP (JSON with Padding), ce n'est en fait pas du tout la même chose : JSON est un type de format d'échange de données, et JSONP est un protocole non officiel d'échange de données entre domaines créé par l'ingéniosité des développeurs. Utilisons le récent film d'espionnage populaire comme analogie. JSON est le « code » utilisé par les partis clandestins pour écrire et échanger des informations, tandis que JSONP est la méthode de connexion utilisée pour transmettre des informations écrites en code à leurs camarades. de l'information, et l'autre est la méthode convenue par les deux parties pour transmettre l'information.
Avantages de JSON :
1. Basé sur du texte brut, la transmission multiplateforme est extrêmement simple ;
2. Javascript est pris en charge de manière native et presque tous les langages backend sont pris en charge ; Format de données léger, occupant des caractères La quantité est très petite, particulièrement adaptée à la livraison sur Internet
4. Bien qu'elle ne soit pas aussi claire que XML, elle est toujours facile à identifier après une indentation raisonnable ; 5. Facile à écrire et à analyser, bien sûr, le principe est que vous devez connaître la structure des données
Bien sûr, JSON a aussi des défauts, mais de l'avis de l'auteur, ils ne sont vraiment pas pertinents, donc ils ne le seront pas ; être expliqué séparément.
Format ou règles JSON :


JSON peut décrire la structure des données d'une manière très simple. Il peut faire tout ce que XML peut faire, il n'y a donc aucune distinction entre les deux en termes de croisement. plate-forme. Tout aussi égal.
1. JSON n'a que deux descripteurs de type de données, les accolades {} et les crochets []. Les deux points anglais restants sont des caractères de mappage, les virgules anglaises sont des délimiteurs et les guillemets doubles anglais "" sont les caractères de mappage. définisseur. 2. Les accolades {} sont utilisées pour décrire un ensemble de « différents types d'ensembles de paires clé-valeur non ordonnées » (chaque paire clé-valeur peut être comprise comme une description d'attribut POO), et les crochets [] sont utilisés pour décrire un ensemble de « Collecte de données ordonnées du même type » (pouvant correspondre à des tableaux POO). 3. S'il y a plusieurs sous-éléments dans les deux ensembles ci-dessus, ils doivent être séparés par des virgules.
4. Les paires clé-valeur sont séparées par deux points anglais :, et il est recommandé d'ajouter les noms de clés avec des guillemets doubles anglais "" pour faciliter l'analyse des différentes langues.
5. Les types de données couramment utilisés dans JSON ne sont rien de plus que des chaînes, des nombres, des booléens, des dates et des valeurs nulles. Les chaînes doivent être placées entre guillemets doubles, et le reste n'est pas utilisé. Je n'entrerai pas dans les détails ici. Oui, je suggère simplement que si le client n'a pas la fonction de trier par date, il suffit de transmettre la date et l'heure directement sous forme de chaîne, ce qui peut éviter bien des problèmes.


Le processus de génération de jsonp :
// 描述一个人 
    var person = {
    "Name": "Bob", "Age": 32, "Company": "IBM", "Engineer": true
}
1. Un problème bien connu, la demande directe Ajax pour les fichiers ordinaires présente le problème de l'accès non autorisé entre domaines, que vous soyez ou non une page statique ou une page Web dynamique, des services Web, WCF, tant qu'il s'agit d'une requête inter-domaines, ce n'est pas autorisé

2. Cependant, nous avons également constaté que lors de l'appel de fichiers js sur la page Web, cela n'est pas affecté par le fait qu'il s'agisse de plusieurs domaines (de plus, nous avons également constaté que toutes les requêtes avec des balises avec l'attribut "src" ont des capacités inter-domaines, telles que 3f1c4e4b6b16bbbd69b2ee476dc4f83a, a1f02c36ba31691bcfe87b2722de723b, e715207b25134a7a9c7c2d29f7300f17); Les contrôles, les proxys côté serveur et les Websockets appartenant au futur HTML5 ne sont pas inclus.) Il n'y a qu'une seule possibilité d'accéder aux données entre domaines, et c'est d'essayer de charger les données dans un fichier au format js sur le serveur. serveur distant pour l'appel du client et le traitement ultérieur ;
4. Nous savons déjà qu'il existe un format de données de caractères purs appelé JSON qui peut décrire des données complexes de manière concise. Ce qui est encore mieux, c'est que JSON est également pris en charge nativement par js. , ce format peut donc être traité presque comme vous le souhaitez sur les données du client ;
5. De cette façon, le client Web appelle le fichier au format js généré dynamiquement sur le serveur inter-domaines (généralement avec JSON). comme suffixe) exactement de la même manière que le script appelant. Évidemment, le serveur La raison pour laquelle le fichier JSON est généré dynamiquement est pour y charger les données nécessaires au client.
6. Une fois que le client a appelé avec succès le fichier JSON, il obtiendra les données dont il a besoin. Le reste sera traité et affiché selon ses propres besoins. Cette méthode d'obtention de données à distance ressemble beaucoup à AJAX , mais c'est en fait. pas pareil.
7. Afin de faciliter l'utilisation des données par le client, un protocole de transmission informel s'est progressivement formé. Les gens l'appellent JSONP. L'un des points clés de ce protocole est de permettre aux utilisateurs de transmettre un paramètre de rappel au serveur, et puis le serveur renvoie les données. Ce paramètre de rappel sera utilisé comme nom de fonction pour envelopper les données JSON, afin que le client puisse personnaliser sa propre fonction pour traiter automatiquement les données renvoyées.


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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn