まずは、クロスドメインでもなんでも無く、JavaScript として自分のコードでその動作の基本を作成するとこうなります。
<script type="text/javascript"> var myfunc = new Function("obj", "window.mydata = obj"); myfunc({ "jsonp1": "ようするに", "jsonp2": "こういうこと" }) alert(mydata.jsonp1 + "|" + mydata.jsonp2); </script>
次に、JSONP と呼ばれている部分を外部にしてクロスドメインするとなるとこういう事になります
<script type="text/javascript"> var myfunc = new Function("obj", "window.mydata = obj"); </script> <script src="http://toolbox.winofsql.jp/jsonp.php" type="text/javascript"></script> <script type="text/javascript"> alert(mydata.jsonp1 + "|" + mydata.jsonp2); </script>
その際、jsonp.php の中はこうなっています。
<?php header( "Content-Type: text/javascript; Charset=utf-8" ); ?> myfunc({ "jsonp1": "ようするに", "jsonp2": "こういうこと" })
さらにこれを実用的にするには、もっといろいろテクニックがいるわけですが、jsonp.php のようなコードは、そのサイトに置くだけで誰からもアクセスする事ができるようになります。 が。 そういうスクリプトはWEBサーバが管理できない場合に使えばいいと思うので、実際は PHP 内部にでも 「Access-Control-Allow-Origin: *」 をヘッダで返すようにすればいいと思うのですが。 関連する Microsoft ドキュメント Function オブジェクト 関連する記事 jQuery で JSONP。なるほど、良くできてる。
|
【JavaScriptの最新記事】
- Replit : js-web-speech
- JavaScript の論理和(||) による『無かった場合の値の代入』/ expr1 || expr2 は expr1 を false と見ることができる場合は expr2 を返します
- Seesaa の記事に下の『最新の同カテゴリのリスト』のリンクの最後に付く ?seesaa_related=category を削除する方法
- JavaScript : ブラウザ判定( IE11 対応 ) / edge を追加
- JavaScript : 入力文字列を 変数用16進数表現 に変換する
- JavaScript : 入力文字列を htmlentity に変換する
- HTML5 で行われる入力チェックを :invalid :valid 疑似クラスと JavaScript を使用してリアルタイムにエラーを視認させる
- HTML5 で行われる入力チェックのエラーメッセージをカスタマイズする JavaScript の記述( この手のコントロールはとてもデリケートです。いろいろなパターン検証が必要です )
- テーブルのセルをクリックして背景色を rgb(0,0,0) から #000000 の変換で、eval を使う事の考察
- JavaScript & VBScript : ブラウザから Windows の OS のバージョンを判定
- Firefox、IE11 の canvas で動作する楕円( ellipse )関数
- 文字列を UTF-8(2バイト以上) で表現した時の 16進数表現の文字列を取得する
- ブログで jQuery を使用するのに、全ての記事で使うわけでは無いので、記事毎でロードする
- JavaScript による2会話アプリケーションのコントロール(2)
- JavaScript による2会話アプリケーションのコントロール(1)
- JavaScript : Global な undefined 変数に絡むいろいろ
- 簡易縦書き変換
- ブラウザの WebGL チェック : jQuery 名前空間へ変数($.is_webgl)追加
- document.createElement("a") で新しいウインドウ(タブ)を開く
- JavaScript と VBScript のカラーコード(#RRGGBB)の文字列と数値間の相互変換