【问题标题】:Load JSON file, error undefined加载 JSON 文件,错误未定义
【发布时间】:2015-07-03 14:47:53
【问题描述】:

我正在尝试加载一个我将用作常量文件的 JSON 文件,但我总是收到未定义的错误,有人可以帮忙吗?

代码如下:

function loadJsonFile(filePath){
 $.getJSON(filePath, function(Mydata) {
    alert(Mydata.length);
    return Mydata;
    })
error(function() { alert("error"); 
});

常量文件的结构是:

{
    "var1":"v1",
    "var2":"v2"
}

提前感谢您的帮助。

【问题讨论】:

  • 你在哪里得到错误未定义,哪一行?你也少了一个点。 )error 之间是输入这个问题的错字还是真的错过了点
  • 确保您提供的文件路径正确,让我们知道您在开发者工具的网络选项卡中遇到了什么错误
  • @PatrickEvans 输入问题时出现错误,调用函数时出现错误: var data= loadJsonFile('./constants.json');警报(数据[“var1”]);
  • @vinayakj 是的,路径是正确的,我得到一个错误:“未捕获的类型错误:无法读取未定义的属性 'var1'

标签: javascript json load


【解决方案1】:
function loadJsonFile(filePath, callback){
       $.getJSON(filePath)
        .success(function(Mydata) {
              callback(data);
       })
       .fail(function() { alert("error")}); ;
});

function doStuff(data){
  alert(data.var1)
}

loadJsonFile('url', doStuff);

【讨论】:

  • 我不能在我的主函数中调用它:(你能帮忙
  • 请用你所有的代码创建一个jsFIddle,然后我可以修改并给你
  • 谢谢@vinayakj,我考虑过更新并且它有效。顺便说一句,我正在寻找可以对我的一小部分代码进行代码审查的人,你能接受我的请求吗?
  • 谢谢,请您在 yatikamika [AT] gmail [DOT] com 上签个名,显然我无法在这里与您联系:/
【解决方案2】:

为了调用 loadJsonFile 以返回一个值,return 语句必须放在 $.getJSON() 成功回调函数之外。失败处理程序中还有一些语法错误,应使用 .fail() 代替 .error() is deprecated

function loadJsonFile(filePath) {
    var data = null;
    $.getJSON(filePath, function(Mydata) {
        alert(Mydata.length);
        data = Mydata;
    })
    .fail(function() {
        alert("error");
    });
    return data;
}

【讨论】:

  • return 我以后不能在我的主要功能中使用它!你能帮忙吗
【解决方案3】:

两件事: 1. 你缺少 JSON.parse() 吗?

Mydata = JSON.parse(Mydata); // we parse it here
alert(Mydata.length);
return Mydata;
  1. 记住一个有效的 json 对象必须在逗号 ("|') 之间。如果你这样做了

    JSON.parse({ "var1":"v1", "var2":"v2" });

你会得到错误。正确的做法是:

JSON.parse('{ "var1":"v1", "var2":"v2" }');

【讨论】:

  • @oxacarga 我添加了 JSON.Parse 但总是同样的错误 :( 对于 (') 我直接放入文件路径,所以不需要把它没有?
  • 它的getJSON方法,JSON.parse是隐式的
猜你喜欢
  • 1970-01-01
  • 2016-11-29
  • 1970-01-01
  • 2019-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-12
相关资源
最近更新 更多