如何处理外部api JSON而不是JSONP
How to process external api JSON and not JSONP
我试图调用BreweryDB API,如果我直接去API url (http://api.brewerydb.com/v2/search/geo/point?key=MYKEYHERE&lat=46.8677308&lng=-96.81083149999999&callback=?),它返回看起来像好的json。
{
currentPage: 1,
numberOfPages: 1,
totalResults: 4,
data: [],
status: "success"
}
当我通过jQuery运行json请求时
$.getJSON("http://api.brewerydb.com/v2/search/geo/point?key=MYKEYHERE&
lat=46.8677308&lng=-96.81083149999999&callback=?", function(){console.log("herp my derp");})
它没有成功执行,我打印到控制台的文本也没有执行。在FF中我得到
enter code here SyntaxError: missing ; before statement
如果我删除回调参数,我得到跨站点脚本小调。
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at
http://api.brewerydb.com/v2/search/geo/point?key=MYKEYHERE&lat=46.867741699999996&lng=-96.811004.
(Reason: CORS header 'Access-Control-Allow-Origin' missing).
我最初试图使用json,但似乎他们不提供该格式的响应。耶。
如何使用jQuery/Javascript处理这个JSON ?
如何使用jQuery/Javascript处理这个JSON ?
他们会需要添加CORS头或JSONP响应。没有什么你可以做在你的端得到这个工作仅使用jQuery/JavaScript -任何解决方案在你的端只将不得不涉及一些服务器端
要避开沙盒限制,请尝试通过您的服务器代理他们的服务。
下面是一个使用PHP的例子:
你JS:$.getJSON("/brewery.php?lat=46.8677308&lng=-96.81083149999999", function(){console.log("herp my derp");})
brewery.php:
<?php
echo file_get_contents("http://api.brewerydb.com/v2/search/geo/point?key=YOURKEYHERE&lat={$_GET['lat']}&lng={$_GET['lng']}&callback=?");
相关文章:
- 如何使用jquery ajax和jsonp在您自己的域上读取json数据
- 分析angular.js中的JSONP$http.json()响应
- 如何使用Angular$http.jsonp从S3加载JSON文件
- 在没有jsonp的情况下从另一个域获取数据(json格式)
- 使用 JSONP 调用的跨域 AJAX 返回纯 JSON
- Javascript CORS JSON/JSONP Request
- 如何在 cakephp 中回复 jsonp,而无需求助于 .json
- 使用 jQuery 和 jsonp (vimeo api) 按键获取选定的 json 值
- AngularJS在从HTTP返回的JSON中获取语法错误.JSONP.
- 数据类型 jsonp 和 JSON 之间的区别
- 为什么 $.getJson 不能与 json 或 jsonp 一起使用
- RESTful JSON 端点应该以 .js 结尾吗?JSONP呢?
- 使用 ajax 将 Json/Jsonp 数据放入表单中
- 无法使用 JSONP 访问 json 页面
- 使用 Ajax 调用 Deezer API (jquery) - dataType JSON 返回空 - JSONP 返
- 如何拉动&显示JSON/JSONP文件中的数据
- 使用JSON/JSONP访问tumblr帖子
- 连续json &jsonp请求使用Crossrider失败
- 尝试从url获取JSON/JSONP数据,并将结果显示在html网页上
- 无法正确获取JSON/JSONP