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

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

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

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

Q&A

1回答

719閲覧

「Uncaught TypeError:nullのプロパティ 'token'を読み取れません」というエラーが表示されます。

shotaro-Nakano

総合スコア0

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

0グッド

0クリップ

投稿2021/09/01 16:46

編集2021/09/02 04:34

発生している問題

エラーが表示されます。解決方法を教えてください!
イメージ説明

該当のソースコード

<!DOCTYPE html> <html lang="ja"> <head> <title>Microsoft Translator テキスト API で英訳を行うサンプルコード</title> <meta charset="utf-8"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> </head> <body> <h1>Microsoft Translator テキスト API サンプル</h1> <h2>フォームの入力データを英語に翻訳します。</h2> <div id="japanese"></div> <input type="text" id="inText" oninput="inputText()" placeholder="入力してください"> <div id="endMsg">入力完了と判定しました<br>入力:</div> <script type="text/javascript"> "use strict"
var gTimer; function inputText(){ // ========================================================= // 入力の度に実行される // 入力完了までタイマーで実行待ちする // タイマーまでに次の入力があると、再度タイマー設定 // ========================================================= // --- サンプル用 メッセージ出力 ------------------- var wObj = document.getElementById("endMsg"); wObj.innerHTML = '入力中です'; wObj.className = 'defStyle runStyle'; // ============================================= // 一定時間を待って入力完了と判断 // ============================================= if(gTimer){clearTimeout(gTimer);} gTimer = setTimeout(inputEnd, 700); } function inputEnd(){ // ========================================================= // タイマー時間経過で入力完了と判断 // ========================================================= // サンプル用の処理です。入れ替えて利用ください // 入力完了後のメッセージ入れ替え var wObj = document.getElementById("endMsg"); wObj.innerHTML = '入力完了と判定しました<br>入力:'+document.getElementById("inText").value; wObj.className = 'defStyle endStyle'; // 現在の時刻を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: true, }).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 = $("#inText").val(); 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: true, }) // Translator テキスト APIを通じて取得したデータから、翻訳語が含まれるプロパティを取得 // replace関数でタグを除去し、翻訳データのみを抽出して表示する const data = response.responseText; const translation = data.replace(/<("[^"]*"|'[^']*'|[^'">])*>/g, ''); $("#japanese").text(translation); }) }
</script> </body> </html>

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

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

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

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

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

guest

回答1

0

async: false を使わないようにしましょう。(指定しない場合 true

https://api.jquery.com/jquery.ajax/

投稿2021/09/01 18:23

mather

総合スコア6753

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問