当前位置: 首页 > 面试题库 >

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

尹英华
2023-03-14
问题内容

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

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

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

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

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

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


问题答案:

抱歉,您无法像这样加载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请求与浏览器在处理您的请求时发送的请求之间的区别<script src="">本质上没有什么区别。他们都将对资源进行GET。HTTP不在乎是否由于脚本标记或AJAX调用而完成,您的服务器也不会。



 类似资料:
  • 问题内容: 我有一个动态生成的页面,我想在其中使用静态JavaScript,并向其传递JSON字符串作为参数。我已经看到Google使用了这种方法。 但是,我应该如何从JavaScript中读取JSON字符串? 在此JavaScript中,我想使用HTML文档中的JSON参数。我不知道是否最好使用jQuery。 问题答案: 我将脚本声明更改为: 注释类型和ID字段。之后 在所有浏览器中都可以正常工

  • 本文向大家介绍如何将src设置为来自另一个域的HTML中的img标签?,包括了如何将src设置为来自另一个域的HTML中的img标签?的使用技巧和注意事项,需要的朋友参考一下 要在网页上使用图像,请使用<img>标签。标签允许您添加图像源,高度,宽度,高度等。src用于添加图像URL。alt是替代文本属性,当图像无法加载时,该文本是可见的。使用HTML,将图像源添加为另一个域URL。为此,将src

  • 本文向大家介绍如何从系统驱动器将src设置为html中的img标签?,包括了如何从系统驱动器将src设置为html中的img标签?的使用技巧和注意事项,需要的朋友参考一下 要在网页上使用图像,请使用<img>标签。标签允许您添加图像源,高度,宽度,高度等。src用于添加图像URL。alt是替代文本属性,当图像无法加载时,该文本是可见的。 使用HTML,将图像源添加为系统驱动器的路径。为此,将src

  • 我试图从桌面隐藏一个javascript脚本块,并且只能在移动设备上显示它。 谢谢

  • 问题内容: 我有一个div标签,该标签通过ajax调用填充了脚本,但是脚本未执行。 有没有办法使脚本执行? 问题答案: 如果您使用jQuery的方法,它将解析出脚本标签并对其进行评估: 如果没有jQuery,则可以使用(1)正则表达式或(2)解析DOM树并查找脚本标签来自己编写。(#2是jQuery的执行方式)

  • 问题内容: 我遇到一个问题,其中在JavaScript中用引号引起来的字符串中包含结束脚本标记,这正在终止该脚本。我认为这不是预期的行为。 我感兴趣的测试用例浏览器:Mozilla / 5.0(X11; U; Linux i686; en-US; rv:1.9.1.4)Gecko / 20091028 Ubuntu / 9.10(karmic)Firefox / 3.5.4。 问题答案: 怎么了?