【メモ】jsにより、様々なドメイン間で実現
3631 ワード
一、いくつかの概念
①従来のAjax:インタラクティブなデータフォーマット——カスタム文字列またはXML記述;
ドメイン間:サーバ側のエージェントによって解決されます.
②現在の最良案:JSON形式でデータを転送し、JSONPを用いてドメインを跨ぐ.
③JSON:データ交換形式.純粋なテキストに基づいて、オリジナルJSでサポートされています.
フォーマット:大かっこ{}、大かっこ[]の2種類のデータ型記述子.区切り記号カンマ、マッピング記号のコロン、定義記号の二重引用.
④JSONP:ドメイン間データ対話プロトコルであり、非公式である.
1、Webページはjsファイルを呼び出し、ドメインにまたがることができる.拡張:srcプロパティのあるラベルにはドメイン間能力があります.
2、ドメイン間サーバーで動的にデータを生成し、jsファイル(通常json接尾辞)に保存し、クライアント呼び出しに供する.
3、クライアントがデータの使用を容易にするため、JSONPと呼ばれる非公式転送プロトコルを形成する.このプロトコルでは、ユーザーがcallbackパラメータをサーバに渡すことを許可し、サーバがデータを返すときにこのcallbackパラメータを関数名としてJSONデータを包み、クライアントが自分の関数を勝手にカスタマイズして戻りデータを自動的に処理できるようにすることに重点を置いている.
二、JSONP実現
例1:クライアントが一方的に受信する:
①クライアント:クライアント設定で、サーバのjsデータを受信して処理するcallFuncという名前の関数オブジェクトを作成します.jsデータの核心は、callFunc関数を呼び出すと同時にパラメータが付属し、dataオブジェクトの値である.
②サーバ側——クライアントjsの関数を直接呼び出し、データを転送する.
インスタンス2-クライアントは、指定された関数名をサーバに送信し、サーバ側はその関数名を受信し、対応する関数を呼び出してデータをパラメータ形式で送信します.
まとめ:実装コードは複雑ではありませんが、Ajaxドメイン間、frameset/iframeドメイン間などを実装すると効率的です.
①従来のAjax:インタラクティブなデータフォーマット——カスタム文字列またはXML記述;
ドメイン間:サーバ側のエージェントによって解決されます.
②現在の最良案:JSON形式でデータを転送し、JSONPを用いてドメインを跨ぐ.
③JSON:データ交換形式.純粋なテキストに基づいて、オリジナルJSでサポートされています.
フォーマット:大かっこ{}、大かっこ[]の2種類のデータ型記述子.区切り記号カンマ、マッピング記号のコロン、定義記号の二重引用.
④JSONP:ドメイン間データ対話プロトコルであり、非公式である.
1、Webページはjsファイルを呼び出し、ドメインにまたがることができる.拡張:srcプロパティのあるラベルにはドメイン間能力があります.
2、ドメイン間サーバーで動的にデータを生成し、jsファイル(通常json接尾辞)に保存し、クライアント呼び出しに供する.
3、クライアントがデータの使用を容易にするため、JSONPと呼ばれる非公式転送プロトコルを形成する.このプロトコルでは、ユーザーがcallbackパラメータをサーバに渡すことを許可し、サーバがデータを返すときにこのcallbackパラメータを関数名としてJSONデータを包み、クライアントが自分の関数を勝手にカスタマイズして戻りデータを自動的に処理できるようにすることに重点を置いている.
二、JSONP実現
例1:クライアントが一方的に受信する:
①クライアント:クライアント設定で、サーバのjsデータを受信して処理するcallFuncという名前の関数オブジェクトを作成します.jsデータの核心は、callFunc関数を呼び出すと同時にパラメータが付属し、dataオブジェクトの値である.
<script type="text/javascript">
var callFunc = function(data){
alert(' js :' + data.result);//data JSON 。
};
</script>
<script type="text/javascript" src="http:// js .com/remote.js"></script>
②サーバ側——クライアントjsの関数を直接呼び出し、データを転送する.
callFunc({"result":"value1"});
インスタンス2-クライアントは、指定された関数名をサーバに送信し、サーバ側はその関数名を受信し、対応する関数を呼び出してデータをパラメータ形式で送信します.
<script type="text/javascript">
//
var flightHandler = function(data){
alert(' : ' + data.price + ' ,' + ' ' + data.tickets + ' 。');
};
// js script。
// url code JSON key,callback : callFuncName。
var url = "http://flightQuery.com/jsonp/flightResult.aspx?code=CA1998&callback=callFuncName";
var script = document.createElement('script');
script.setAttribute('src', url);
// script head
document.getElementsByTagName('head')[0].appendChild(script);
</script>
まとめ:実装コードは複雑ではありませんが、Ajaxドメイン間、frameset/iframeドメイン間などを実装すると効率的です.