加载 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