Javascript 如何将文件中的json加载到变量中

Javascript 如何将文件中的json加载到变量中,javascript,json,Javascript,Json,我有一个文件.json,内容如下: { "a":{"var1":"Sábado"}, "b":{"var2":"Domingo"} } 考虑到我不能编辑file.js,我需要找到一种方法将该文件中包含的json加载到变量mj,以便alert(mj[“a”].var1)向我显示消息Sábado 更新: 如果不使用JQuery、Prototype或任何其他js库,这是否可能实现?好吧,我想到的最简单的事情是创建一个iframe,其中包含json的源代码,并在加载事件时使用javascrip

我有一个
文件.json
,内容如下:

{
  "a":{"var1":"Sábado"},
  "b":{"var2":"Domingo"}
}
考虑到我不能编辑
file.js
,我需要找到一种方法将该文件中包含的json加载到变量
mj
,以便
alert(mj[“a”].var1)
向我显示消息
Sábado

更新:
如果不使用JQuery、Prototype或任何其他js库,这是否可能实现

好吧,我想到的最简单的事情是创建一个iframe,其中包含json的源代码,并在加载事件时使用javascript访问其内容,以便在变量中赋值,或者手动实现普通JSF框架的功能…

使用
XMLHttpRequest
对象对
file.json
发出普通ajax请求。在
onreadystatechange
函数中,编写eval逻辑以接收json并分配到变量中

它的eval声明看起来像

var data = eval ('(' + xhr.responseText + ')');
如果您不确定如何使用ajax,请浏览以下页面:

编辑: 乔纳森的答案似乎是一个推荐的方法;当时我没有想到这个答案。使用
JSON.parse()
而不是
eval()

这是纯js(不使用eval),甚至可以跨域工作:

var script = document.createElement('script');
script.type = 'text/javascript';
script.src = "file.js"; /*url of your js/jsonp file */
var head = document.getElementsByTagName('head')[0];
head.insertBefore(script, head.firstChild);

您使用的是node.js,还是应该在浏览器中运行?如果您使用的是JQuery,您可以执行顺便说一句,名称
file.js
不明确,应该是
file.json
我编辑了问题和文件名。它必须是一个不使用JQuery、node.js或其他js库的解决方案OK,您已经加载了json文件,但是如何将json文件的内容存储在变量mj中?您不需要mj(除非您是芝加哥公牛队:),只需提醒(a.var1)。。。然而,如果您有称为a、b、…的全局变量(或局部变量),则可能会出现问题。。。与json匹配。如果文件的格式为。但是,如果没有填充,
{…}
将被解析为,这使得
字符串之后出乎意料。好的一点,上次我对不可修改的数据使用它时,我必须将数据包装在
回调()
中,或者用
someVar=
服务器端将其预先封装。。。基本代理类似于
echo$HEADERSTUFF;printf“mj=”;cat$THEFILE
(如果文件是远程的,则为wget-O-$THEURL),这似乎是导致此问题的示例之一<代码>eval()
对此不是必需的。使用。
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = "file.js"; /*url of your js/jsonp file */
var head = document.getElementsByTagName('head')[0];
head.insertBefore(script, head.firstChild);