【问题标题】:Different result from JSON.parse using Firefox Scratchpad vs node/JSFiddle使用 Firefox Scratchpad vs node/JSFiddle 与 JSON.parse 不同的结果
【发布时间】:2018-11-07 04:43:03
【问题描述】:
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 对象。

当我在 node 或 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

JSFiddle:

SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data

都不行。

我错过了什么?

【问题讨论】:

    标签: javascript json xmlhttprequest


    【解决方案1】:

    这里的问题是您尝试在调用onload 函数之前解析JSON。所以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)
    }
    

    【讨论】:

    • 谢谢。我不知道它怎么没有被调用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 2020-06-14
    • 1970-01-01
    • 2019-02-28
    • 1970-01-01
    相关资源
    最近更新 更多