【发布时间】:2012-08-22 20:38:58
【问题描述】:
我在 jQuery 中使用以下 API 调用来检索数据。我在末尾附加了?callback=?,这似乎解决了跨域域问题,如果我不包括我得到跨域错误。
在 chrome 中它说,“资源被解释为脚本,但使用 MIME 类型text/html 传输。”
返回的响应是Content-Type: text/html; charset=UTF-8。
我可以通过在 Chrome Console → Resources 中查看响应来查看响应。但是如何在 JavaScript 中操作响应?
$.getJSON("http://api.visistat.com/stats-api-v2.php?key=skx79q0pyu01.&qt=idd&d=json&sdate=2012-08-26&edate=2012-08-28?callback=?", function(json) {
console.log(json);
});
我无权更改 API。
更新: 尝试使用 YQL 例如http://jsfiddle.net/4VEHR/5/
看起来这个插件也可能有用:https://github.com/padolsey/jQuery-Plugins/tree/master/cross-domain-ajax/
【问题讨论】:
-
那个 API 链接对我不起作用。我认为它有某种 cookie,它会检查以验证您是否可以查看它。但是尝试使用YQL 作为代理 - 它可以读取 JSON 并返回 JSONP 或 CORS。
-
抱歉,该页面的直接链接不起作用,要查看它转到网站,然后单击“现场演示”,然后单击“statcaster API”。感谢 YQL 的建议,我想我在这里取得了一些进展 goo.gl/6k5Tg
-
我没有找到任何关于他们 API 的文档。
d参数除了JSON还能取什么值?我尝试了XML或只是将其排除在外,但出现了各种错误。 YQL 的一个怪癖是,虽然它可以输入和输出 JSON,但在内部一切都是 XML,格式之间的转换会让它们有点“奇怪”。或许你可以使用d参数通过YQL得到更直接的数据格式。 -
啊哈,我找到了文档。请注意,您可以选择其他输出格式,所有平面文本文件都使用各种分隔符,逗号是最常见的
CSV格式:select * from csv where url="http://api.visistat.com/stats-api-v2.php?key=skx79q0pyu01.&qt=idd&d=comma&sdate=2012-08-26&edate=2012-08-28"- 请注意,在某些格式中,一个字段具有奇怪的值<?=$e?>,而在另一种格式。这可能是一个错误或一些您需要解决的怪癖? -
感谢以 CSV 格式提取数据,帮助我以更好的格式处理它。是的,有时数据看起来有点奇怪。
标签: jquery ajax json cross-domain asp.net-web-api