【メモ】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オブジェクトの値である.
<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ドメイン間などを実装すると効率的です.