【问题标题】:HTTP GET Not Fired for Script Tag with Type application/json类型为 application/json 的脚本标记未触发 HTTP GET
【发布时间】:2013-10-18 20:58:03
【问题描述】:

通过向 DOM 添加 <script> 标记来调用 REST API。我需要将类型设置为application/json 以避免出现 JS 错误。 API 返回一个 JSON 对象,并且使用 type=text/javascript 会定期给出语法错误,因为浏览器需要 JavaScript,而是读取 JSON。根据浏览器的不同,它会在第一个冒号上给出“Unexpected token :”错误,或“SyntaxError: missing ; before statement {"property_name":"

此块不执行 API 调用: (请注意,此调用需要身份验证密钥,因此此代码会给出 500 错误。)

<script>
    var s = document.createElement('script');
    s.type = 'application/json';
    s.src = '//my.api.com/api/v2/asset.json';
    document.getElementsByTagName('head')[0].appendChild(s);
</script>

使用默认的“text/javascript”类型会进行 API 调用,但会出现语法错误:

<script>
    var s = document.createElement('script');
    s.src = '//my.api.com/api/v2/asset.json';
    document.getElementsByTagName('head')[0].appendChild(s);
</script>

我可以将 MIME 类型设置为会触发 API 调用 (HTTP GET) 的其他类型吗?还是我们需要在 API 上设置一些东西才能使这个调用起作用?

【问题讨论】:

    标签: javascript json api rest mime-types


    【解决方案1】:

    浏览器不知道如何执行以 JSON 表示的脚本(因为它不是一种脚本语言,它是一种数据格式),因此您不能使用 &lt;script&gt; 元素来加载 JSON 文件。

    如果您想加载 JSON 数据以供 JavaScript 使用,请使用 XMLHttpRequest。

    【讨论】:

    • 这是有道理的。谢谢你。我认为我缺少“浏览器如何工作”的一个简单的基本方面。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-15
    • 1970-01-01
    • 2014-04-26
    • 2011-12-04
    • 2016-03-05
    • 2012-08-24
    相关资源
    最近更新 更多