Jsonpはドメインをまたいでjsonデータの原理を獲得します.

2251 ワード

実はJsonpはとても簡単なものです.主にタグを利用したjavascriptドキュメントの動的解析によって実現されます.(実は、エヴァ関数を使ってもいいです.)  超簡単な例を紹介します.
まずクライアントのコードを用意します.
[html]view plin
copy
print
>  
  • <) xmlns="http://www.w3.org/1999/xhtml「 >  
  •   
  •     Test Jsonp  
  •     <スクリプト type=「text/javascript」  
  •             機能 jsopCallback(reult)  
  •             {  
  •             alert(result.msg)  
  •             }  
  •           
  •     <スクリプト type=「text/javascript」 src="http://crossdomain.com/jsonServerResponse?jsonp=jsonpCallback">
      
  •   
  • <body>  
  •   
  •    
    <span style="font-size:18px;"><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head>
        <title>Test Jsonp</title>
    	<script type="text/javascript">
            	function jsonpCallback(result)
            	{
    			alert(result.msg);
            	}
        	</script>
    	<script type="text/javascript" src="http://crossdomain.com/jsonServerResponse?jsonp=jsonpCallback"></script>
    </head>
    <body>
    </body>
    </html> </span>
    このうち、Json Callbackはクライアントが登録し、ドメインサーバ上のjsonデータを取得した後、コールバックの関数です.http://crossdomain.com/jsonServerResponse?jsonp=jsonpCallback このurlはドメインサーバをまたいでjsonデータを取るインターフェースで、パラメータはコールバック関数の名前で、戻りのフォーマットは 
    [javascript]view plin
    copy
    print
    jsopCallback({msg:'this) is Json data')
    <span style="font-size:18px;">jsonpCallback({msg:'this is json data'})</span>
    Jsonp原理:まずクライアントにcalbackを登録して、calbackの名前をサーバーに伝えます.  この時、サーバーさんはjsonデータになります.  そしてjavascript文法の方式で、一つのfunctionを生成します.functionの名前は伝達されたパラメータjsonです.  最後に、jsonデータを直接に入力して、functionに置いて、js文法の文書を作成して、クライアントに返します.  クライアントブラウザで、scriptタグを解析して、リターンされたjavascriptドキュメントを実行します.この時、データはパラメータとして、クライアントがあらかじめ定義したcalback関数に入ってきました.