K.Maebashi's BBS

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

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


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


[2096] JSONPについて
返信


投稿者:くまきち
2018/01/05 21:33:49

Link:
立て続けに申し訳ございません。
『基礎からの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

Link:
>・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>タグで取り込んだ外部スクリプトから「呼び返してもらう」
関数なので、コールバック関数と呼んでいます。

[ この投稿を含むスレッドを表示] [ この投稿を削除]