使用类型application / json的脚本标记不会触发HTTP GET

时间:2013-10-10 21:58:24

标签: javascript json api rest mime-types

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

此块不执行API调用: (请注意此调用需要和auth密钥,因此此代码在写入时会出现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上设置一些东西,这样这个调用会起作用吗?

1 个答案:

答案 0 :(得分:0)

浏览器不知道如何执行以JSON表示的脚本(因为它不是脚本语言,而是数据格式),因此您无法使用<script>元素来加载JSON文件。 / p>

如果要加载用于JavaScript的JSON数据,请使用XMLHttpRequest。