我对网络开发很陌生。
当我输入此链接时
https://api.locu.com/v1_0/venue/search/?name=jimmy%20johns&api_key=b1f51f4ae241770f72fca5924d045733c4135412
进入我的浏览器,我可以看到JSON对象。
我需要做什么才能在javascript中使用这个JSON对象?我尝试过使用JQuery的$.getJSON
但没有运气。
修改
使用JSONP工作了!追加& jsonp = readJSON&?callback =?到URL给了我我想要的JSON。感谢您提供所有信息丰富的答案。
$.getJSON( "https://api.locu.com/v1_0/venue/search/?name=jimmy%20johns&api_key=b1f51f4ae241770f72fca5924d045733c4135412&jsonp=readJSON&?callback=?", function() {
console.log( "success" );
})
function readJSON(response){
console.log (response);
}
答案 0 :(得分:2)
问题是,这个域(api.locu.com)与您提供文件的位置相同吗?我想它不是。在这种情况下,您有两个选择:
答案 1 :(得分:0)
如果您使用JQuery,这应该得到概念......但您可以使用任何东西。
let mapViewController = MapViewController()
self.view.addSubview(mapViewController.view)
现在,我注意到你使用的是getJSON,它几乎完全相同。但是我没有看到你使用成功功能,所以如果你按照自己的方式行事,你试过了吗?
var url = "https://api.locu.com/v1_0/venue/search/?name=jimmy%20johns&api_key=b1f51f4ae241770f72fca5924d045733c4135412";
var result;
var settings = {
success: function(data){
result = data;
//do anything else related to this data here as you need it fetched, and is not linear.
}
}
$.ajax(url, settings);
我可能会弄错,但你说:“没有运气”所以我对你用$.getJSON(url, function(data){
result = data;
});
答案 2 :(得分:0)
不是直接来自网络浏览器,没有。您需要使用代理:代表您发出此请求的另一台服务器,然后为您提供结果。
Web浏览器在安全方面非常紧张。保护用户免受恶意活动的策略之一是限制Javascript可以向其发出HTTP请求的域。
从您的域( origin )到另一个域的HTTP请求称为跨源请求。这些都是默认禁止的,除非收到的HTTP响应包含标题Access-Control-Allow-Origin
,否则您无法读取响应正文。
使用代理作为中介。代理不是网络浏览器,它不关心Access-Control-Allow-Origin
,并且无论如何都会读取响应。
您可以使用许多代理。一个简单的是YQL( Yahoo Query Language )。这是一篇关于该主题的文章,使用jQuery:http://ajaxian.com/archives/using-yql-as-a-proxy-for-cross-domain-ajax
答案 3 :(得分:0)
我不清楚你的问题,但我认为你可以使用ajax调用,例如:
$.ajax({
url: "https://api.locu.com/v1_0/venue/search/?name=jimmy%20johns&api_key=b1f51f4ae241770f72fca5924d045733c4135412",
type: 'get',
cache: false,
success: function (response) {
console.log(response);
}
});