Javascript变量为'null'或& # 39;未定义# 39;从本地JSON文件加载后
javascript variable is 'null' or 'undefined' after loading it from a local JSON file
我试图从JSON文件"gunsList "的内容创建一个javascript变量my_jason
。(两者都存储在我机器上的同一个文件夹中)。
我似乎遇到了OP在这篇文章中遇到的同样的问题,当他纠正了他有缺陷的JSON文件时,这个问题得到了解决。认为我有同样的问题,我运行我的文件通过JSONLint(我假设这是适当的验证),它回来干净。
借鉴这篇文章的技巧,我尝试使用jQuery来完成它(注意:我在现有代码的其他部分成功地使用了jQuery),如下:
var my_json;
$.getJSON('gunList.json', function(json) {
my_json = json;
});
当我尝试上述方法时(例如,alert(my_json)
), my_json
是undefined
。
诚然,我对AJAX知之甚少,但我也尝试过:
var my_json = (function () {
var my_json = null;
$.ajax({
'async': false,
'global': false,
'url': 'gunsList.json',
'dataType': "json",
'success': function (data) {
my_json = data;
}
});
return my_json;
})();
在上面的例子中,my_json
是null
。
我所有的代码引用数组在"gunsList。当我把它作为一个变量粘贴到我的js文件中时,它运行得很好,但是作为一个新手程序员,我真的很兴奋能让它与json一起工作。
这就是为什么你原来的$.getJSON()
代码不能工作-注释显示了执行顺序和my_json
在每一步的值:
var my_json;
// 1 - my_json is undefined
$.getJSON('gunList.json', function(json) {
// 3 (!)
my_json = json;
// 4 - my_json now has the JSON data
});
// 2 - my_json is undefined (!)
如您所见,该函数在设置my_json
值之前返回。
所以你试图通过在$.ajax()
调用上使用async: false
选项来修复它。但这是个非常糟糕的主意!除非你有非常很好的理由,否则不要使用这个选项:在许多浏览器中,它不仅会挂起你自己的网站,还会挂起所有浏览器选项卡和窗口,直到你的服务器返回数据。
相反,让$.ajax()
或$.getJSON()
调用异步操作,并在回调或从该回调调用的函数中处理数据。那么,回到你原来的$.getJSON()
代码,你可以这样做:
$.getJSON( 'gunList.json', function( json ) {
// Do stuff with JSON data here, or call a function here and
// pass the data to it as an argument
});
相关文章:
- Javascript-如何读取json文件中的列并将其保存在Javascript数组中
- 在使用Polymer'加载所有json文件后执行方法;s的核心ajax
- 不显示带有本地json文件数据的谷歌地图脚本
- 可以't使用Appcelerator将JSON文件解析为JavaScript中的TableView
- 加载两个具有相同父密钥名称的json文件
- 使用JSON文件中的变量(字符串)填充文本区域
- 动态显示JSON文件内容
- 正在尝试将JSON文件放入JS数组
- 如何检查Json文件更新,如果更新了,则用更新的数据刷新我的页面
- 单击按钮更改加载到表中的JSON文件
- 处理一个JSON文件;完全相同的副本不是
- 在Javascript中加载JSON文件
- 使用Bootstrap将JSON文件加载到表中
- Angular 2:在本地.json文件上找不到文件
- JSON-从浏览器向外部服务器发送哪些http头JSON文件
- 如何获取d3.js中json文件中具有特定值的总行数
- 如何在dojo应用程序构建概要文件中加载json文件
- jQuery UI使用json文件自动完成
- 通过Azure存储以HTML形式获取JSON文件
- ngResource没有'从JSON文件解析HTML时不起作用