In diesem Artikel wird hauptsächlich beschrieben, wie die wx.request-Verarbeitungsausnahme für JSON im WeChat-Applet behoben wird. Jetzt kann ich sie mit Ihnen teilen.
Kürzlich bin ich während des Entwicklungsprozesses des Miniprogramms auf ein magisches Problem gestoßen.
Die API wx.request, die vom Applet zum Initiieren von Netzwerkanforderungen verwendet wird, analysiert den Antworttext standardmäßig im JSON-Format und gibt ein JS-Objekt zurück.
wx.request({ url: 'test.php', //仅为示例,并非真实的接口地址 data: { x: '', y: '' }, header: { 'content-type': 'application/json' // 默认值 }, success: function(res) { console.log(res.data) } })
wobei res.data
normalerweise vom Typ Objekt ist.
Wenn die JSON-Daten des Antworttexts jedoch \u2028
Zeichen enthalten, schlägt die Interpretation fehl und die Ausgabe res.data
ist der Zeichenfolgentyp des Antworttexts.
Testbeispiel: {“test”:”这里有一个特殊字符:
"}
Testcode:
wx.request({ ... success: (res) => { console.log('APIFactory:run', '调试', { res }); }, });
Ergebnis:
in In den Entwicklertools kann
normal analysiert werden. Auf echten Geräten (iOS und Android) schlägt
fehl zu analysieren.
Das Sonderzeichen ist u2028
, das als Zeilentrennzeichen analysiert wird.
Dieses Zeichen ist mit JSON-Strings kompatibel und kann normal von JSON.parse
geparst werden.
Aber wenn diese Zeichenfolge im JS-Code vorhanden ist, führt dies zu einem Betriebsfehler.
Das WeChat-Applet läuft auf drei Terminals: iOS, Android und Entwicklertools zum Debuggen.
Die JS-Skriptausführungsumgebungen der drei Terminals sind unterschiedlich:
Unter iOS läuft der Javascript-Code des Miniprogramms in JavaScriptCore.
Auf Android wird der Javascript-Code des Miniprogramms über X5 JSCore analysiert.
Auf dem Entwicklungstool läuft der Javascript-Code des Miniprogramms in nwjs.
Die Logikschicht und die Ansichtsschicht des Miniprogramms rufen die native API über „WeixinJsBridge“ auf.
Das Problem ist also: wx.request
In Bezug auf die Datenverarbeitung des Antworttexts, unabhängig davon, ob er in JS Engine oder Native verarbeitet wird, gibt WeChat den Quellcode nicht bekannt das Miniprogramm Die Situation ist unbekannt. Die Verarbeitung von
wx.request
entspricht für uns einer Blackbox, und der Datentyp von res.data
kann mehrere Werte haben. Wenn wir eine bessere Robustheit im Geschäft gewährleisten möchten, benötigen wir auch eine kompatible Beurteilung und fehlertoleranter Code, wenn res.data
vom Typ Object/String
ist.
Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, er wird für das Studium aller hilfreich sein. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website.
Verwandte Empfehlungen:
Erläuterung von Tipps für Array-Arrays in JavaScript
Das obige ist der detaillierte Inhalt vonSo lösen Sie die Verarbeitungsausnahme von wx.request für JSON, das \u2028 im WeChat-Applet enthält. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!