小编典典

HTML / Javascript:如何访问设置了src的脚本标签中加载的JSON数据

javascript

我有一个在服务器中生成的JSON文件,由于该页面可见,因此我希望在客户端上对其进行访问。基本上我想实现的是:

我在html文档中声明了以下标签:

<script id="test" type="application/json" src="http://myresources/stuf.json">

源中引用的文件具有JSON数据。如我所见,数据已经下载,就像脚本一样。

现在,如何使用Javascript访问它?我尝试使用多种方法来访问带有和不带有jQuery的脚本标签,以尝试获取我的JSON数据,但是以某种方式无法正常工作。入门它innerHTML会工作了JSON数据被脚本编写的内联。不是,不是我想要达到的目标。

页面加载后的远程JSON请求也不是一种选择,以防您建议这样做。


阅读 974

收藏
2020-05-01

共1个答案

小编典典

抱歉,您无法像这样加载JSON。

我知道您在想“为什么我不能src在这里使用?我已经看到过类似的东西……”:

<script id="myJson" type="application/json">
 { 
   name: 'Foo' 
 }
</script>

<script type="text/javascript">
    $(function() {
        var x = JSON.parse($('#myJson').html());
        alert(x.name); //Foo
     });
</script>

…简而言之,那就是脚本标签被“滥用”为数据持有人。您可以使用各种数据来做到这一点。例如,许多模板引擎利用脚本标签来保存模板。

您有一个简短的选项列表,可从远程文件加载JSON:

  1. 使用$.get('your.json')或其他某种AJAX方法。
  2. 编写一个将全局变量设置为json的文件。(似乎曲棍球)。
  3. 将其拉入不可见的iframe中,然后在加载后将其内容抓取(我称之为“ 1997模式”)
  4. 咨询巫毒教士。

最后一点:

页面加载后的远程JSON请求也不是一种选择,以防您建议这样做。

…那没有道理。AJAX请求和浏览器在处理您的请求时所发送的请求之间的区别<scriptsrc="">基本上没有。他们都将对资源进行GET。HTTP不在乎是否由于脚本标记或AJAX调用而完成,您的服务器也不会。

2020-05-01