Maison > interface Web > js tutoriel > le corps du texte

Comment résoudre l'exception de traitement de wx.request pour JSON contenant \u2028 dans l'applet WeChat

不言
Libérer: 2018-07-13 14:52:17
original
2765 Les gens l'ont consulté

Cet article présente principalement comment résoudre l'exception de traitement wx.request pour JSON contenant u2028 dans l'applet WeChat. Il a une certaine valeur de référence. Maintenant, je le partage avec vous. Les amis dans le besoin peuvent s'y référer

Description du problème

Récemment, pendant le processus de développement du mini-programme, j'ai rencontré un problème magique.

L'API wx.request utilisée par l'applet pour lancer des requêtes réseau analysera le corps de la réponse au format JSON par défaut et renverra un objet JS.

wx.request({
    url: 'test.php', //仅为示例,并非真实的接口地址
    data: {
        x: '',
        y: ''
    },
    header: {
        'content-type': 'application/json' // 默认值
    },
    success: function(res) {
        console.log(res.data)
    }
})
Copier après la connexion

est généralement de type Objet. res.data

Cependant, si les données JSON du corps de la réponse contiennent

caractères, l'interprétation échouera et la sortie \u2028 est le type de chaîne du corps de la réponse. res.data

Échantillon

Échantillon de test :

{“test”:”这里有一个特殊字符:
  "}

Code du test :

wx.request({
    ...
    success: (res) => {
        console.log('APIFactory:run', '调试', { res });
    },
});
Copier après la connexion
Résultat :

  1. Dans les outils de développement, il peut être analysé normalement


    Comment résoudre lexception de traitement de wx.request pour JSON contenant \u2028 dans lapplet WeChat

  2. Sur les appareils réels (iOS et Android), il ne parvient pas à être analysé


    Comment résoudre lexception de traitement de wx.request pour JSON contenant \u2028 dans lapplet WeChat

u2028

Le caractère spécial est

, qui est analysé comme un séparateur de ligne. u2028 Ce caractère est compatible dans les chaînes JSON et peut être analysé normalement par
. JSON.parseMais s'il y a cette chaîne dans le code JS, cela provoquera une erreur de fonctionnement.

Pourquoi les appareils réels et les outils de développement fonctionnent-ils de manière incohérente ?

L'applet WeChat s'exécute sur trois terminaux : iOS, Android et les outils de développement pour le débogage.

Les environnements d'exécution des scripts JS des trois terminaux sont différents :

  • Sur iOS, le code javascript du mini programme s'exécute en JavaScriptCore.

  • Sur Android, le code javascript du mini programme est analysé via X5 JSCore.

  • Sur l'outil de développement, le code javascript du mini programme s'exécute en nwjs.

La couche logique et la couche de visualisation du mini-programme appellent l'API native via "WeixinJsBridge".

Comment résoudre lexception de traitement de wx.request pour JSON contenant \u2028 dans lapplet WeChat

Le problème est donc que,

Concernant le traitement des données du corps de la réponse, qu'il soit traité en JS Engine ou Native, WeChat ne divulgue pas le code source de le mini programme La situation est inconnue. Le traitement de wx.request

équivaut pour nous à une boîte noire, et le type de données de wx.request peut avoir plusieurs valeurs. Si nous voulons offrir une meilleure robustesse en entreprise, nous avons également besoin d'une compatibilité avec le jugement. et code tolérant aux pannes lorsque res.data est de type res.data. Object/String

Ce qui précède représente l'intégralité du contenu de cet article. J'espère qu'il sera utile à l'étude de chacun. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois !


Recommandations associées :

Explication des astuces pour les tableaux Array en JavaScript

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal