2017-03-14 64 views
0

我试图从Kraken api获取JSON响应来转换currences,但是我发现了所有的方法(也在这里在stackoverflow中),尽管它们适用于其他网站(像“https://api.cryptonator.com/api/currencies”或在stackoverflow线程“/ questions/12460378/how-to-get-json-from-url-in-javascript”中讨论的那个),它们根本不能用kraken工作(例如“https://api.kraken.com/0/public/Assets” ),我没有得到任何回应,因为URL被破坏了,但通过使用浏览器访问它,我可以清楚地看到JSON对象。使用javascript无法获取来自URL的JSON响应

我使用纯javascript,因为我在wordpress中工作,但如果有必要,我可以添加jquery(以为我不会浪费其他时间,我会继续使用js)。

,直到如今,我想:

function httpGet(theUrl) 
{ 
    var xmlHttp = null; 

    xmlHttp = new XMLHttpRequest(); 
    xmlHttp.open("GET", theUrl, false); 
    xmlHttp.send(null); 
    return xmlHttp.responseText; 
}  
prove = eval('(' + httpGet("https://api.kraken.com/0/public/Assets") + ')'); 

既cryptonator和雅虎(第2例)工作,但与海怪。

var getJSON = function(url, callback) { 
    var xhr = new XMLHttpRequest(); 
    xhr.open('GET', url, true); 
    xhr.responseType = 'json'; 
    xhr.onload = function() { 
     var status = xhr.status; 
     if (status == 200) { 
     callback(null, xhr.response); 
     } else { 
     callback(status); 
     } 
    }; 
    xhr.send(); 
}; 

getJSON('https://api.kraken.com/0/public/Assets', 
function(err, data) { 
    if (err != null) { 
    alert('Something went wrong: ' + err); 
    } else { 
    alert('Your query count: ' + data); 
    } 
}); 

和以前一样。我也试图与jQuery的,但结果是一样的,海妖网址是唯一没有工作

$.getJSON("https://api.kraken.com/0/public/Assets", function(data) { 
    // Get the element with id summary and set the inner text to the result. 
    $('#summary').text(data.result); 
}); 

我真的不明白,为什么我不能设法得到,并从该网站解析这个该死的JSON对象而其他人工作得很好,同时考虑到如果我通过浏览器进入链接,它会给我一个回应。

在此先感谢您的帮助

+2

这是因为该API没有'Access-Control-Allow-Origin:*'头部集合,所以它不允许通过Ajax发送请求。 – JJJ

+0

正如@JJJ所提到的,如果你在你选择的浏览器(我的Chrome)上打开你的开发工具,你会得到一个错误,解释你为什么不能满足你的请求。 XMLHttpRequest无法加载https://api.kraken.com/0/public/Assets。请求的资源上没有“Access-Control-Allow-Origin”标题。因此,'http:// localhost:8000'不允许访问。' – Dan

+0

正如@JJJ所提到的,您调用的域未配置为允许通过JS代码发送请求(通过在响应中包含CORS头部)。你可以在[this fiddle](https://jsfiddle.net/gzf0cvja/)中的控制台错误中看到这个。要解决这个问题,你需要添加CORS头文件 - 假设你有权访问api.kraken.com域 - 或者改为从服务器端代码发出请求 –

回答

0

的主要问题是:

No 'Access-Control-Allow-Origin' header is present on the requested resource.

如果要使用JSONP,服务器必须有一个JSONP API。 单击here可查看服务器支持。