javascript - 使用 Firefox Scratchpad vs node/JSFiddle 与 JSON.parse 不同的结果
问题描述
var primariesText, primaries;
//var XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest; //node
var requestURL = 'https://raw.githubusercontent.com/WFCD/warframe-items/development/data/json/Primary.json';
var request = new XMLHttpRequest();
request.open('GET', requestURL);
request.responseType = 'json';
request.send();
request.onload = function() {
primariesText = request.response;
//console.log(primariesText);
}
primaries = JSON.parse(JSON.stringify(primariesText[0]));
console.log(primaries);
我从 3 个解析器中尝试了这个脚本并得到了不同的结果:
当我在 Firefox 的暂存器中运行它时,它会很好地输出 JS 对象。
当我在节点或 JSFiddle https://jsfiddle.net/bn56hspk/中运行它时,我得到了
TypeError: Cannot read property '0' of undefined
指向primariesText[0] 数组。
我把 [0] 放在那里的原因是为了摆脱大多数括号。我尝试了两个primariesText []
SyntaxError: Unexpected token ]
或primariesText
节点:
SyntaxError: Unexpected token u in JSON at position 0
JSF中:
SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data
两者都不起作用。
我错过了什么?
解决方案
这里的问题是您尝试在调用函数之前解析 JSON。onload
所以primariesText
只是未定义。
在这里,我在函数内部解析它onload
并按预期工作(注意这里的封闭花括号如何在}
代码末尾结束)
var primariesText, primaries;
//var XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest; //node
var requestURL = 'https://raw.githubusercontent.com/WFCD/warframe-items/development/data/json/Primary.json';
var request = new XMLHttpRequest();
request.open('GET', requestURL);
request.responseType = 'json';
request.send();
request.onload = function() {
primariesText = request.response;
//console.log(primariesText);
primaries = JSON.parse(JSON.stringify(primariesText[0]));
console.log(primaries)
}
推荐阅读
- c - 无法限制 FPS OpenGL 和 C
- python - Python - 遍历两个对象列表并获取父实例名称
- android - 为什么 Touchable Opacity 不能在 android 上运行?
- python - Pandas DataFrame - 将日期列标题与时间行结合起来
- javascript - 为什么我的 setTimeOut 给了我 Mobx 中的代理对象,react.js
- c# - 使用 WPF 定位多个图表
- azure - 基于输出结果的 Azure 管道任务(通过或失败)
- docker - Docker 容器:两种服务,相似的容器
- java - 有没有一种快速的方法来检查元素是否使用硒不显示
- reactjs - componentWillUnmount 内的 react-native console.log