2017-03-14 4 views
0

クラウニングAPIを使用してJSONレスポンスを取得しようとしていますが、他のサイトでも動作しますが(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を使用していますが、必要に応じて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を使ってみましたが、結果は同じですが、クラーケンurlは、私がそのサイトからこのいまいましいJSONオブジェクトを取得して解析するために管理することができない理由私は本当に理解できないだけで動作していない

$.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); 
}); 

です他のブラウザはブラウザでリンクを入力すると応答が得られます。ヘルプ

+2

このAPIは 'Access-Control-Allow-Origin:*'ヘッダーセットを持たないため、Ajax経由でリクエストを許可しないためです。 – JJJ

+0

@JJJが言及しているように、自分のブラウザでDevツールを開くと(Chrome版)、なぜあなたの要求を満たすことができないのかを説明するエラーが表示されます。 'XMLHttpRequestはhttps://api.kraken.com/0/public/Assetsを読み込めません。要求されたリソースに「Access-Control-Allow-Origin」ヘッダーが存在しません。したがって、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をクリックすると、サーバーのサポートが表示されます。

関連する問題