javascript - jquery jsonp原則: jsタグが動的に生成される位置の問題
迷茫
迷茫 2017-05-19 10:33:18
0
4
873

jquery jsonp の原理は、script タグの src 属性を使用して、フロントエンドとバックエンドのデータ要求で発生するクロスドメインの問題を解決することです。私が理解していないのは、jquery が動的に script タグをドキュメントの先頭である head タグに追加するということです。通常、コールバック関数は にあります。 body、関数は最初に宣言されてから、宣言なしで使用されます。なぜ直接呼び出してもバックグラウンドから渡されるデータを取得できるのでしょうか。

以下は私が行ったテストです:

リーリー

このコード文字列が宣言された test 関数の下に配置されると、数字 10 が出力されます。test 関数の上に配置されると、エラーが報告されます

リーリー

jquery の実装を比較すると、動的に生成された js が宣言された関数の前に呼び出された場合に実行される理由がよくわかりません。

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全員に返信(4)
左手右手慢动作

リーリー

直接リンクされた src の場合、ブラウザはそれを上から下に解析し、最初に b.js の値を取得します。a.js の関数はまだページに読み込まれておらず、テストはありません。 ) この関数なので、エラーが報告されます

ただし、ajax リクエストを送信する場合は、ページが完了するのを待ってからリクエストすることになります。つまり、最初にコールバック関数を宣言してから、リクエストするスクリプトを作成するため、この時点でのスクリプトの場所は影響を受けません。最終結果。 。

いいねを押す +0
世界只因有你

実行順序に関しては、非同期の問題を無視しているため、サーバーから返されたスクリプト タグが読み込まれるときに、対応するメソッドを呼び出すことができるように、ローカル コールバック関数が定義されている必要があります。
簡単に言えば:
jsonp=ローカル コールバック関数を定義=>スクリプト タグをロード=>ロードされたスクリプト タグのコンテンツを実行します。

いいねを押す +0
Peter_Zhu

jsonp 率直に言うと、これは合意です:
「私たちは遠すぎてお互いに連絡が取れないのですが、どうすれば私にあなたのものをくれるでしょうか?」
「私がそれをあなたに投げてはどうでしょうか、あなたはそれを捕まえることができますか?」 ?'
'わかりました、私はバスケット (コールバック) を持っています。それはあなたの 1 時の位置 (コールバック名) にあります。バスケットが存在するかどうか、そして正しい位置にあるかどうかについては、それをそこに投げます。契約には影響しません。

いいねを押す +0
曾经蜡笔没有小新

jsonpで導入されるjsの読み込み場所は、jsを取得するjsonpステートメントが実行される場所です。配置に関しては、あくまで形式的なものです。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート