別ドメインにあるjson形式の情報をJavaScriptで取得する方法として、jsonpを使うやり方を試してみます。
サンプルコード
まずjsonpを試してみる前に、jsonファイルでの取得を試してみます。
以下のようなjsonファイルを用意して、別ドメインに設置します。
{ "key": "value" }
Ajaxで取得して、結果をconsoleに表示してみます。
$(function() { const getData = $.ajax({ url: 'https://test.cly7796.net/blog/sample/get-data-of-another-domain-using-jsonp/sample.json', dataType: 'json' }); getData.then( function(data) { console.log('取得内容:', data); }, function(error) { console.log('エラー内容:', error); } ); });
この場合、取得しているページとjsonの設置しているドメインが異なるため、以下のようなエラーになります。
Access to XMLHttpRequest at 'https://test.cly7796.net/blog/sample/get-data-of-another-domain-using-jsonp/sample.json' from origin 'https://cly7796.net' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
次にjsonpを使用する方法を試してみます。
jsonファイルを以下のように変更して、別ドメインに設置します。
sample( { "key": "value" } )
先ほどと同様に、Ajaxで取得して結果をconsoleに表示してみます。
$(function() { const getData = $.ajax({ url: 'https://test.cly7796.net/blog/sample/get-data-of-another-domain-using-jsonp/sample.jsonp', dataType: 'jsonp', jsonpCallback: 'sample' }); getData.then( function(data) { console.log('取得内容:', data); }, function(error) { console.log('エラー内容:', error); } ); });
これで別ドメインにある情報を取得することができました。
jsonpのデモページ
コメントが承認されるまで時間がかかります。