我在访谈期间必须通过javascript阅读json文件。
json文件几乎是这样的:
{ apple: {price: 1}, banana: {price: 2} }
我有一些解决方案,如:
然而,当我问面试官时,他给了我一些提示:
使用脚本标记将json文件加载到html:
script type="application/json" src="scripts/data.json"
然后通过eval(json)
我很困惑:如何只是通过将其作为脚本标签加载而无需修改来访问数据?
答案 0 :(得分:2)
你不能这样做:
HTML/Javascript: how to access JSON data loaded in a script tag with src set
这可能是面试官的一个技巧问题吗?
使用ajax,这是我认为唯一正确的方法。其他解决方案属于黑客类别。
另外,正如Franco所提到的,不要使用eval(),除非你必须支持非常旧的浏览器并且不关心安全性。请改用JSON.parse()。它甚至得到了IE8的支持。调用eval会评估/执行其参数 - 因此对于试图将恶意代码注入您网站的人来说,这是一个攻击媒介。
答案 1 :(得分:0)
您需要获取json文件(假设您想通过单击按钮获取它):
$(document).ready(function(){
$("button").click(function(){
$.getJSON("your-json.js", function(result){
$.each(result, function(i, val){
//you can do something with your returned data.
});
});
});
});
注意:不要使用eval(),这是一种不好的做法。
答案 2 :(得分:0)
你可能对问题的细节记录不好。
显然,问题的第一部分涉及Ajax(XmlHttpRequest)。
第二部分可能与JSONP有关,您可以在其中修改服务器输出,使其看起来更像function(<json data here>)
,其中函数名称由客户端提供给服务器(尽管这实际上是特定于实现的) 。 JSONP曾经是几年前的常见模式(主要作为没有XHR支持的浏览器的向后兼容性解决方案,但也绕过跨域限制)。这些天可能要少得多,因为它有一些重要的安全问题。如果您想了解更多信息,请访问:https://en.wikipedia.org/wiki/JSONP
然而,JSONP不涉及eval
的使用,但存在同样的安全问题:任何事情都会发生。