我试图调用Binance API以获取BTC中的LTC价格,并且在浏览器上测试了链接“ https://api.binance.com/api/v1/ticker/price?symbol=LTCBTC”,如何从该链接获取json文件到我的javascript文件中? / p>
$(document).ready(function() {
var url = 'https://api.binance.com/api/v1/ticker/price?symbol=LTCBTC';
$.ajax( {
url: url,
dataType: 'jsonp',
type: 'GET',
success: function(data) {
console.log(data); //returns nothing
}
});
})
答案 0 :(得分:5)
如其他答案中所述,存在CORS问题。因此,您可以从客户端尝试使用proxyURL,如下所示,
$(document).ready(function() {
var url = 'https://api.binance.com/api/v1/ticker/price?symbol=LTCBTC';
const proxyURL = "https://cors-anywhere.herokuapp.com/";
$.getJSON(proxyURL + url, function(playerData) {
console.log(playerData);
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
希望有帮助。
答案 1 :(得分:1)
对https://api.binance.com/api/v1/ticker/price?symbol=LTCBTC的请求提供了使用CORS策略的json数据
{“符号”:“ LTCBTC”,“价格”:“ 0.01520100”}
JSONP看起来像
myCallback({“ symbol”:“ LTCBTC”,“ price”:“ 0.01520100”})
这看起来像Javascript / PHP函数,并且工作原理类似。
jsonp的URL包括URL中的回调... https://api.binance.com/api/v1/ticker/price?symbol=LTCBTC&callback=myCallback
但是此网站不支持
{“代码”:-1101,“ msg”:“参数太多;预期为'1'并且已接收 '2'。”}
它可能可以在您的网站上用php打开吗?我无法从所用的系统进行测试,我的平板电脑上没有套接字传输“ ssl”设置可进行测试。
是的,它可以通过PHP包装程序使用。
myJSONP(<?php echo file_get_contents('https://api.binance.com/api/v1/ticker/price?symbol=LTCBTC');?>);
答案 2 :(得分:0)
如果在将dataType:'jsonp'更改为dataType:'json'之后在控制台上进行检查,您将得到以下内容,因为您的代码及其脚本不在同一主机上,并且他们需要启用Access-Control-Allow-Origin来从其他域访问。如果您使用php,则可以使用cur。
跨域请求被阻止:“同源起源”策略禁止读取https://api.binance.com/api/v1/ticker/price?symbol=LTCBTC处的远程资源。 (原因:CORS标头“ Access-Control-Allow-Origin”缺失)。
答案 3 :(得分:0)
从浏览器,邮递员或提琴手执行请求时,您将获得结果
但是从应用程序执行请求时,您将失败并显示错误消息
Access to XMLHttpRequest at 'https://api.binance.com/api/v1/ticker/price?symbol=LTCBTC' from origin 'http://127.0.0.1:5500' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
此问题必须从服务器端解决。
请参阅
此外,如果您使用C#.Net作为后端,请找到解决问题的方法