2017-03-14 91 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可查看服務器支持。