【问题标题】:Read a JSON gist as a query string读取 JSON 要点作为查询字符串
【发布时间】:2017-02-04 22:10:12
【问题描述】:

我目前有一个包含三个文件的 Javascript 应用程序:

index.html
app.js
input.json

app.js 文件多次引用 input.json 文件,以便将内容呈现到 index.html 文件中的 div 中。

我想这样做,以便在 http://example.com/myapp 加载我的 index.html 可以将外部托管的 JSON 作为 app.js 读取的源,例如 myexample.com/myapp?myhost.com/files/input。 json.

任何人都可以告诉我如何让它工作吗?

【问题讨论】:

标签: javascript jquery html json query-string


【解决方案1】:

为此,您需要在 myexample.com 上启用 CORS

假设您使用的是 jQuery。 (如果您不想使用 jQuery 处理 ajax 请求,请查看 here

$.get('http://myexample.com/myapp?myhost.com/files/input.json')
.done(function(data) {
    // use external 'data' here.
})
.fail(function() {
    // handle error here
});

【讨论】:

  • 谢谢!我使用 jQuery。所以我在这里有了想法,但是如果 myhost.com/files/input.json 可以是任何 URL,我如何将其称为变量?特别是$.get('http://myexample.com/myapp?<json_url>', function(data) { // use external 'data' here. }); 我想获取那里的任何 URL。然后首先检查它是否是 JSON,如果不是则抛出错误 - 或者,如果尝试将其解析为 JSON,则在 // use external 'data' here. 部分无法读取它时抛出无法读取错误。
  • 我编辑了答案以显示 $.get 上的处理错误。如果需要,您可以在 .done() 中应用额外检查。例如检查“数据”对象是否有效。您还可以使用 try/catch 块来控制异常。
  • 我认为这里的最后一部分是获取当前页面的url,然后将其作为变量传递给$.get。对吗?
  • 如果您要获取的数据与当前页面在同一个域中,则不需要传递完整的 URL。只需使用 /files/input.json 调用 $.get。在这种情况下也不需要 CORS。如果不同,则不需要当前页面的 URL,您可以使用 otherdomain.com/files/data.json 调用 $.get,假设其他域具有正确的 CORS 设置。
  • 太好了,这为我解答了所有问题。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多