質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

2回答

3305閲覧

APIから取得したJSONを変数へ格納したい

sstaishou

総合スコア46

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2020/09/04 11:03

PHPは書けますがJavaScript初心者です。

PHPではAPIを取得するには以下の様に記述し変数へ格納できます。

PHP

1<?php 2$api = file_get_contents('https://blockchain.info/ticker'); 3$json = json_encode($api); 4?>

では、JavaScriptで以下の様に記述するとvar bcへ格納されません。
thisやselfなども試しましたが格納されませんでした。

JavaScript

1var bc; 2 3var btc = axios({ 4 method: 'get', 5 url: 'https://blockchain.info/ticker', 6 responseType: 'json', 7}).then(response =>{ 8 bc = response.data; 9}); 10 11console.log(bc);

変数bcへの格納方法を教えていただければ幸いです。

何卒よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gentaro

2020/09/04 11:08

bc = response.data; の直後に console.log(bc); をやったら値取れてるんじゃないっすか。
sstaishou

2020/09/04 11:23

確かにそこでは格納されています。 しかし、そこでしか格納できないとなると、そこのスコープに すべての処理を記述しないといけなくなって大変不便です。 以下の様にグローバル?にしたいのです。 JSは上への階層へ変数を格納できないものなのでしょうか? ``` var bc; var btc = axios({ method: 'get', url: 'https://blockchain.info/ticker', responseType: 'json', }).then(response =>{ bc = response.data; }); var usd = bc.USD ```
gentaro

2020/09/04 13:03

回答はすでに付いてるから書かないけど、とりあえずpromiseについて調べましょう。
guest

回答2

0

もはやPHPのAPI関係ないですよね?
もとのURLがCORSでエラーにならないので非同期処理の問題でしょう。

javascript

1(async()=>{ 2 var url="https://blockchain.info/ticker"; 3 var bc= await fetch(url+"?t="+new Date().getTime()).then(res=>res.json()); 4 console.log(bc); 5})(); 6 7

投稿2020/09/04 11:14

yambejp

総合スコア115010

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

exampleのaより抜粋(未検証)

async function func() { try { const response = await axios({ method: 'get', url: 'URL', responseType: 'json', }); return response; } catch (error) { return error; } } var bc = func()

困った時はライブラリの配布サイト等、提供元の情報を見れば大抵解決します

投稿2020/09/04 11:55

hentaiman

総合スコア6426

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問