JSONPのいくつかの見落としやすい詳細について

1772 ワード

私の前端のかす、本文は独学を始める时、私自身が混同しやすくて见落とした细かい点を记录します.の
 
1-JSONP,javascript object notation with padding,中国語に訳すと「パラメータ式JSON」「充填式JSON」です.急に明るくなったことがありますか.多くの本の中で「充填されたJSON」と訳されているが、意味は正反対で、害は浅くない.
 
2-JSONPの本質は、W 3 Cの公式に規範化されていないが、現在最も流行しているドメイン間手段である.W 3 Cが公式に認めているのはCORSです.
 
3-JSONPの原理は2点しかありません:一、scriptラベルを動的に確立して非同期を実現します.二、src属性を利用してドメイン間を実現する.ajaxはまだ同期を実現できる(シーンはほとんど適用されていないが)が、JSONPは非同期を実現するしかない.scriptラベルを動的に確立する点で、JSONPが同期しようとしてもだめだからだ.たとえば、次のコードがあります.
 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4     <title></title>
 5 </head>
 6 <body>
 7     <script type="text/javascript">
 8         var scn = document.createElement('script');
 9         scn.src = 'a.js';
10         document.getElementsByTagName('head')[0].appendChild(scn);
11         alert('b');
12     </script>
13 </body>
14 </html>
alert('a');//a.js

結果はまずbをポップアップし、aをポップアップします.async属性を追加するかどうかは同じです.
結論:動的に追加されたscriptタグは、何を指定しても非同期であり、defer/async属性などの同期非同期を指定する機能はHTMLに書かれたタグにのみ有効である.
src属性による設計当初の圧根でもドメインを跨ぐかどうかの概念はなく,JSONPでも同期が可能である.簡単に言えば、JSONPは非同期ドメイン間、非同期同ドメインの2つの状況を実現するために使用することができる.
 
4-jQueryではJSONPがAJAXに封入されている.今回、AJAXとJSONPに触れたばかりの私に困惑した認識をもたらしました.JSONPはAJAXのサブセットです.もちろん、このような認識は間違っています.JSONPはAJAXで非同期でドメインをまたぐことができない不足を補うために使われているだけで,サブセットではない.