尝试将json文件直接加载到HTML中,并通过javascript读取其内容

时间:2015-12-05 22:03:22

标签: javascript html json

我在访谈期间必须通过javascript阅读json文件。

json文件几乎是这样的:

{ apple: {price: 1}, banana: {price: 2} }

我有一些解决方案,如:

  1. 借助ajax方法阅读
  2. 修改json文件,如“var json = {apple:{price:1},banana:{price:2}}”并将其加载到HTML中,就像javascript文件一样,所以我可以将其作为全局变量读取< / LI>

    然而,当我问面试官时,他给了我一些提示:

    1. 使用脚本标记将json文件加载到html:

      script type="application/json" src="scripts/data.json"

    2. 然后通过eval(json)

    3. 读取js文件中的数据

      我很困惑:如何只是通过将其作为脚本标签加载而无需修改来访问数据?

3 个答案:

答案 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的使用,但存在同样的安全问题:任何事情都会发生。