【问题标题】:How to load <script src="...."> response into variable?如何将 <script src="...."> 响应加载到变量中?
【发布时间】:2019-11-07 08:50:32
【问题描述】:

我的 html 页面正在进行以下调用:

<html>
  <script src="https://someURL.com/api/getData?api_key=xyz&%26format=json">
</html>

它返回以下响应:

data: abc123-abc456-efg678-ertyui789

如何提取

abc123-abc456-efg678-ertyui789

分成一个 var,以便我可以在其他调用中使用它?

(我尝试了 jquery,但由于 CORS 错误而失败,这是我从服务器获得响应的唯一方法)

【问题讨论】:

  • 你能把代码贴出来吗?如果响应是一个对象,理论上你应该可以通过response.data 取值。发布您尝试过的内容,也许我们可以为您提供更多帮助。
  • 您可以使用 2 个选项,具体取决于返回类型。我认为在你的情况下它是 JS 代码所以你应该使用 $.getScript("/path-to-js", function(data) =&gt; { console.log(data) })
  • 请准确展示它如何呈现数据。也许window.data 已设置

标签: javascript html https


【解决方案1】:
var url ='https://someURL.com/api/getData?api_key=xyz&%26format=json',
jQuery.ajax({
               type: 'GET',
               url: url,
               dataType: 'json',
               success:function(res){
                  console.log("success");
                  console.log(res.data);
            });

【讨论】:

  • 您可以使用 JSON 解析器。如果您通过 datatype='jsonp' 发出 Jquery Ajax 请求。将 dataType 更改为 jsonp 以便您的 GET 请求。
  • 他们不能使用 JSON 解析器,他们提供的示例数据 不是有效的 JSON。将 dataType 更改为 jsonp 仅在响应为 JSONP 时才有效……事实并非如此。
【解决方案2】:

你不能。

&lt;script&gt; 元素旨在加载脚本并运行它。 JSON 文档不是脚本。

JSONP 一个脚本,但是如果服务不提供那种格式的数据,那么你就不能使用它。

由于涉及 API 密钥,服务很可能没有提供直接客户端访问数据的机制,因为这需要您将 secret 密钥提供给所有访问者.

取而代之的是在服务器端获取数据。


Further reading


除此之外,data: abc123-abc456-efg678-ertyui789 无论如何都不是有效的 JSON 文档,因此您可能需要自定义解析器而不是 JSON 解析器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-06
    • 1970-01-01
    相关资源
    最近更新 更多