加载 JSON 文件,错误未定义

Posted

技术标签:

【中文标题】加载 JSON 文件,错误未定义【英文标题】:Load JSON file, error undefined 【发布时间】: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' How to return the response from an asynchronous call? 的可能重复项 【参考方案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;

    记住一个有效的 json 对象必须在逗号 ("|') 之间。如果你这样做了

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

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

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

【讨论】:

@oxacarga 我添加了 JSON.Parse 但总是同样的错误 :( 对于 (') 我直接放入文件路径,所以不需要把它没有? 它的getJSON方法,JSON.parse是隐式的

以上是关于加载 JSON 文件,错误未定义的主要内容,如果未能解决你的问题,请参考以下文章

Blazor Swagger:无法加载 API 定义。获取错误:未定义 /swagger/v1/swagger.json

错误类型错误:无法读取未定义的属性“样式资源加载器”

未在IE11上加载错误“符号”的Vue.js未定义

React + Fetch + Json。 TypeError:无法读取未定义的属性

IE下显示 JS 显示未定义

未找到图像定义文件 imagedefinitions.json