首页 > 解决方案 > JSON数据不能存储在变量中

问题描述

我试图将 JSON 文件的内容加载到变量中。之前,变量看起来像这样:

var Data = {
    teams : [
      ["Team 1", "Team 2"], 
      ["Team 3", "Team 4"]  
    ],
    results : [
      [[1,2], [3,4]],       
      [[4,6], [2,1]]        
    ]}

现在我有一个看起来像这样的 JSON 文件:

{"teams":[["Team 1","Team 2"],["Team 3","Team 4"],"results":[[[[1,2],[3,4]],[[4,6],[2,1]]]}

现在我希望 JSON 文件的内容之前存储在数据变量中。我用 Ajax 试了一下,看起来像这样:

$.ajax({
          type: "GET",
          dataType : 'json',
          async: true,
          url: 'data.json',
          success: function(data) {
          console.log(data)
          var Data = data
          },
      });

Console.log 完美运行,但数据未保存在变量中,我收到错误:Uncaught ReferenceError: Data is not defined.

我也尝试过var Data = JSON.parse(data),但这似乎也不起作用。

现在我被困在没有任何线索的地方。

提前感谢您的帮助。

标签: javascriptjson

解决方案


我不确定您的代码在ajax通话后是什么样子,但我猜您正在使用的代码Data是在ajax通话后。ajax是异步的。这意味着您的代码在继续之前不会等待它完成。任何需要等到完成获取数据后的代码,您都可以放入该.success函数。另外,值得注意的是,只有在请求成功success时才会被调用。ajax如果你想处理错误,你可以使用.error类似这样的东西:

$.ajax({
    type: "GET",
    dataType : 'json',
    async: true,
    url: 'data.json',
    success: function(data) {
      console.log(data)
      var Data = data;
      // Anything that needs to use Data would go inside here
    },
    error: function(err) {
      // handle errors
      console.error(err);
    }
});

// Any code here will not wait until `Data` is defined
// console.log(Data) // error

推荐阅读