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

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

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

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

jQuery

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

Q&A

解決済

1回答

229閲覧

ローカルスコープ内からグローバルスコープの変数にアクセスしたい

SugiuraY

総合スコア317

JavaScript

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

jQuery

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

0グッド

0クリップ

投稿2019/01/30 07:52

以下のようにphp側でトークンを生成して、JSに渡すために
ajaxのローカルスコープ内からグローバルスコープのtokenを使用(アクセス)することが
できません。jsファイルが外部にあるため、index.php内で変数にphpから値を生成して、
token変数を渡したいのですが、方法があればご教示ください。

php

1//index.php 2<script> 3 let token ="<?php echo $token; ?>" 4</script> 5 6<script src="ajax.js"><script>

js

1//ajax.js 2//前略 3$.ajax({ 4 type:'POST', 5 url:'servercheck.php', 6 datatype:'json', 7 data:{ 8 transfer_token:token 9 } 10 }) 11 .then( 12//後略

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

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

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

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

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

m.ts10806

2019/01/30 07:57

普通に出来そうに思いますが、何かしら固定文字列でもできませんか? 実際はどのような文字列なのでしょうか? また、「tokenを使用(アクセス)することができません」とはどのように確認されたのでしょうか? ajax.js内でconsole.log(token);してみましたか?
SugiuraY

2019/01/30 12:42

ご指摘ありがとうございます。console.log();したら、出力を確認できました。 ちょっと変数宣言とスコープに迷子になってきたので、もう一度勉強してみます。
guest

回答1

0

ベストアンサー

原因はletで宣言しているからです。
ES6(ES2015)でグローバルに定義したlet,const,classはグローバルオブジェクトのプロパティにならない - Qiita

質問文をシンプルに解決するならば、letではなくvarで変数を宣言するだけで解決します。

しかし思想的には「varでやれ」ではなく、「そもそもそんな使い方すんな」という話ですね。
PHP側でトークン番号をJSONで返すエンドポイントを用意して、
それに向けてAjax通信を飛ばして受け取る構造にしたほうがスッキリするでしょう。

投稿2019/01/30 08:23

miyabi-sun

総合スコア21158

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

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

SugiuraY

2019/01/30 12:37

コメントありがとうございます、変数の宣言方法についてはよくわかりました。 一方で、 ”PHP側でトークン番号をJSONで返すエンドポイントを用意して、 それに向けてAjax通信を飛ばして受け取る構造にしたほうがスッキリするでしょう。” の箇所が正直わからず、また現在実装するためにまさに知りたい知識なのですが、PHP JSON エンドポイント等で検索しても良い情報が得られなかったため、もう一歩具体的な方法、または参考になる記事等があればぜひご教示いただきたいです。 わがままを申し上げて本当に申し訳御座いませんが、よろしくお願い申し上げます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問