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

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

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

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

解決済

【JavaScript】functionの外で値を受け取りたい

asakura
asakura

総合スコア0

JavaScript

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

1回答

0評価

0クリップ

25閲覧

投稿2017/09/11 13:42

翻訳APIを作成しています。

テキスト入力されたmessageを翻訳APIに引数で渡し、
翻訳結果を戻したいのですが、値が受け取れません。

関数の定義の仕方が悪いのか、見当がつかず、、、。
ご指導頂けないでしょうか。

以下、翻訳APIです。

js

// 翻訳API // 文字が入力されたらイベント発火 var tranceLang = textTranslator\(message\); console\.log\("翻訳結果確認: " \+ tranceLang\); function textTranslator\(message\) { // 現在の時刻をUNIX Time に変換して取得 const now = new Date\(\); const nowtime = now\.getTime\(\); // 認証トークンを取得するための関数 \[getToken\] を定義 // http://docs\.microsofttranslator\.com/oauth-token\.html const getToken = function\(\) { const defer = \$\.Deferred\(\); // 現在時刻と、sessionStorageに保存されている時刻を比較 // sessionStorageに保存されているトークンが8分以内に発行されたものであれば、そのまままトークンを返す // 8分以上経っている場合、もしくはトークンが存在しない場合、新規にトークンを取得。 // 取得したトークン、および取得時間をUNIX Time に変換したデータをJSON \[datalist\] に格納 // sessionStorage \[tdata\] にJSONを保存する const arr = JSON\.parse\(sessionStorage\.getItem\("tdata"\)\); if \(arr === null || arr\.time \+ 1000 \* 60 \* 8 < nowtime\) { \$\.ajax\({ url: 'https://api\.cognitive\.microsoft\.com/sts/v1\.0/issueToken', type: 'POST', headers: { 'Content-Type': 'application/json', 'Accept': 'application/jwt', 'Ocp-Apim-Subscription-Key': '認証キー', }, async: false, }\)\.done\(function\(data\) { const datalist = { time: nowtime, token: data, } sessionStorage\.setItem\('tdata', JSON\.stringify\(datalist\)\); }\); } // sessionStorage に保存されたデータを変数 arr2 に格納 // JSONを文字列に変換後、トークンデータを引き出して翻訳用の関数にひきわたす const arr2 = JSON\.parse\(sessionStorage\.getItem\("tdata"\)\); const token = arr2\.token; defer\.resolve\(token\); return defer\.promise\(\); }; // 関数 \[getToken\] 実行後、取得したトークンを 受け取る // フォームから入力したデータとともに、 Microsoft Translator テキストAPIへ送信 \$\.when\(getToken\(\)\)\.done\(function\(token\) { const key = 'Bearer ' \+ token; const text = message; const response = \$\.ajax\({ url: 'https://api\.microsofttranslator\.com/v2/http\.svc/Translate', type: 'GET', data: { 'appid': key, 'Accept': 'application/xml', 'text': text, 'to': 'en', }, async: false, }\) // Translator テキスト APIを通じて取得したデータから、翻訳語が含まれるプロパティを取得 // replace関数でタグを除去し、翻訳データのみを抽出して表示する const data = response\.responseText; const translation = data\.replace\(/<\("\[\^"\]\*"|'\[\^'\]\*'|\[\^'">\]\)\*>/g, ''\); }\) };

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

MasakazuFukami
MasakazuFukami

2017/09/11 13:52

すいません。どこがどうなっているのかいまいちわからないのと、どの関数に何が出力されないのかがわかりません。また、最初に呼び出してある textTranslator\(message\)もおそらくmessageはinput type="text"の入力ハンドリングから取得したものだと思いますが、このようなものもこちらで用意しなければならないので、回答者が回答しやすいように、必要な部分だけを残し、再現性のあるコードを記述していただけるとうれしいです!

まだ回答がついていません

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

JavaScript

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