K.Maebashi's BBS

ご自由に書き込んでください。雑談も可。
テスト書き込みの類はテスト用掲示板にどうぞ

[日付順表示] [日付順インデックス] [スレッド順インデックス]

新規投稿 | 開設者ホームページへ戻る | ヘルプ

[2096] JSONPについて
投稿者:くまきち
2018/01/05 21:33:49

立て続けに申し訳ございません。 『基礎からのWebアプリケーション開発入門』のP.226「補足 JSONP」について、3点質問させて頂きたいです。 ・P.226 補足 JSONP① 「JSONPの基本的な原理は ~ <script>タグによるJavaScriptの取得は同一オリジンポリシーに縛られない」という記載があります。 ここの意図は、「”外部ファイルからのJavaScript取得”は同一オリジンポリシーに縛られない」で合っていますか? 「<script>タグによるJavaScriptの取得」という言い方の理解が不安だった為、質問しました。 ・P.227 補足 JSONP② 「このようにして関数呼び出しを含むJavaScriptを取り込めば、その関数(上記で言えばcallbackFunc)が呼び出されます。」という部分で、 具体的にcallbackFuncが実行されるタイミングがよく分かりませんでした。 下記のように考えておけば良いのでしょうか? HTML────────────────────────┐ │ : │ │ <script src="外部サーバのURL"> │ │ : │ └─────────────────────────┘           + 外部サーバのURL(読み込まれる) ──────────┐ │JSONPの編集と下記のJavaScript生成 │  │・callbackFuncの定義(具体的な表示の編集) │ │・callbackFuncの実行(P.226の網掛け部分) │ └─────────────────────────┘           ↓ HTML────────────────────────┐ │ : │ │┌─────────────────────┐ │ ││・callbackFuncの定義(具体的な表示の編集)│ │ ││★callbackFuncの実行(P.226の網掛け部分) │ │ │└─────────────────────┘ │ │ : │ └─────────────────────────┘ ★が読み込まれたときにcallBackFuncが実行される。 ・P.226 補足 JSONP③ 網掛け部分にある「callbackFunc」には、なぜコールバック関数という名前が付いているのでしょうか。webで調べたコールバック関数は「他の関数に引数として渡す関数」というイメージなので、ここでこの名前(callbackFunc)を使う意図がシックリ来ませんでした。 以上、よろしくお願いいたします。
[この投稿を含むスレッドを表示] [この投稿を削除]
[2097] Re:JSONPについて
投稿者:(ぱ)こと管理人
2018/01/06 21:26:56

>・P.226 補足 JSONP① >「JSONPの基本的な原理は ~ <script>タグによるJavaScriptの取得は >同一オリジンポリシーに縛られない」という記載があります。 >ここの意図は、「”外部ファイルからのJavaScript取得”は同一オリジンポリシーに >縛られない」で合っていますか? 合っています。外部ファイルからのJavaScript取得には<script>タグを 使うので、そのように書いています。(確かに、HTML中にJavaScriptを 書く時も<script>タグは使いますけれども) >・P.227 補足 JSONP② >「このようにして関数呼び出しを含むJavaScriptを取り込めば、その関数 >(上記で言えばcallbackFunc)が呼び出されます。」という部分で、 >具体的にcallbackFuncが実行されるタイミングがよく分かりませんでした。 JavaScriptの実行タイミングについてはp.218に書きましたが、 <script>タグで外部のJavaScriptを読み込んだ場合、その<script>タグのある 位置で実行されます。 JSONPの場合、その外部JavaScriptからcallbackFuncを呼び出すわけですから、 callbackFuncもそのタイミングで実行されます。 そのため、HTML上では、外部JavaScriptを読み込む<script>タグは、 callbackFuncの定義より後ろにある必要があります。 >網掛け部分にある「callbackFunc」には、なぜコールバック関数という >名前が付いているのでしょうか。webで調べたコールバック関数は >「他の関数に引数として渡す関数」というイメージなので、ここでこの名前 >(callbackFunc)を使う意図がシックリ来ませんでした。 コールバック関数というのは、その名の通り「呼び返される」関数です。 電話をかけて相手がいないときに「コールバックお願いします」と留守電に 残しておくのと同じように、後で別の人から「呼び返してもらう」関数のことを コールバック関数と呼びます。その手段のひとつして、関数を、 他の関数に引数として渡しておいて後で呼び返してもらう、という方法もあるわけです。 JSONPの場合、<script>タグで取り込んだ外部スクリプトから「呼び返してもらう」 関数なので、コールバック関数と呼んでいます。
[この投稿を含むスレッドを表示] [この投稿を削除]