尝试将JSON数据存储在变量中时出错

时间:2016-12-21 19:36:09

标签: javascript jquery json

我试图通过外部URL在我的网站上显示一些JSON数据。运行脚本时,我从chrome控制台获得此错误:

  

未捕获的SyntaxError:位于0位置的JSON中的意外标记u   JSON.parse()

使用Javascript:

var json = $.getJSON("url");

var a = JSON.parse(json.responseText);

var result = a.query.results.rate;

document.write(result[0].Rate);

当我在控制台中输入console.log(result)时,它会返回 undefined

JSON:

{
"query": {
    "count": 6,
    "created": "2016-12-21T19:18:22Z",
    "lang": "en-US",
    "diagnostics": {
        "url": [{
                "execution-start-time": "1",
                "execution-stop-time": "2",
                "execution-time": "1",
                "content": "url"
            }, {
                "execution-start-time": "5",
                // more of this
            ]

            "results": {
                "rate": [{
                        "id": "GBPUSD",
                        "Name": "GBP/USD",
                        "Rate": "1.2371",
                    },

                    {
                        "id": "GBPEUR",
                        // more of this
                    },

                }
            ]
        }

我无法对JSON文件进行任何更改,但我检查了它并且它是有效的。

P.S。当我在chrome控制台中编写JavaScript代码时,它可以工作。

提前致谢。

2 个答案:

答案 0 :(得分:4)

这是你的问题:

$.getJSON("url").done(function(response) {
    var result = response.query.results.rate;
    document.write(result[0].Rate);
});

这是一个异步操作,你需要给它加载时间,这样就可以了:

TreeNode

答案 1 :(得分:0)

如果你执行每一行都有一点时间在AS响应将有时间完成并填充responseText,它将在控制台中工作。 $ .getJSON完成后,您需要在回调或承诺链中使用主代码。

...也许

export default class App extends Component {
    render() {
        return (<div> (this.props.children} </div>):
    }
}