[JavaScript] サーバーからJavaScriptに値を設定する方法
- 2008.12.04(木) 17:10
まだ良い方法が思いつかないけれど・・・。
サーバーからJavaScriptに直接、値を設定できないかと色々試行錯誤中。
サーバーからJavaScriptに直接、値を設定できないかと色々試行錯誤中。
最近でてきたアクセス方法にJSONPと言うのがある。
Googleなどのapiの引数にcallback引数というのが存在する。
callback引数にJavaScriptの特定の関数名を与えると、
アクセス完了時に、指定した関数が実行されるようになっている。
中身は当然ながらJSON形式でなければならない。
というかそっちの方が便利だと思う。
・サーバーから出力する文字列
callback時の関数名({a: "aaa", b: "bbb"});
・JavaScriptに定義する関数
function callback時の関数名 (data)
{
・・・・
}
こんな感じ。
これを利用して、HTMLのScriptタグにURLを指定し、JavaScriptに値を渡せる。
が、何気に2重アクセスという・・・。
ちなみに、Ajax通信はクロスドメインアクセスができないが、
この方法はクロスドメインでもアクセスできる。
ただ、この方法を使わなくとも、hiddenに入れちゃうとか、
直接JavaScriptの変数に入れちゃうとか(var a = サーバーで設定)、
Cookieに値を入れちゃうとかあるけれども。。
利点はサーバーから送られてきた値が何なのかすぐには分からないという点だろうか。
もちろん、Cookieに書くようにしても同じではあるが、人によっては無効にしている場合もある。
そういった点を鑑みて、JSONPで値を渡す方法が適していると考えた。
でも、2重アクセス・・・、うーむ。
Googleなどのapiの引数にcallback引数というのが存在する。
callback引数にJavaScriptの特定の関数名を与えると、
アクセス完了時に、指定した関数が実行されるようになっている。
中身は当然ながらJSON形式でなければならない。
というかそっちの方が便利だと思う。
・サーバーから出力する文字列
callback時の関数名({a: "aaa", b: "bbb"});
・JavaScriptに定義する関数
function callback時の関数名 (data)
{
・・・・
}
こんな感じ。
これを利用して、HTMLのScriptタグにURLを指定し、JavaScriptに値を渡せる。
が、何気に2重アクセスという・・・。
ちなみに、Ajax通信はクロスドメインアクセスができないが、
この方法はクロスドメインでもアクセスできる。
ただ、この方法を使わなくとも、hiddenに入れちゃうとか、
直接JavaScriptの変数に入れちゃうとか(var a = サーバーで設定)、
Cookieに値を入れちゃうとかあるけれども。。
利点はサーバーから送られてきた値が何なのかすぐには分からないという点だろうか。
もちろん、Cookieに書くようにしても同じではあるが、人によっては無効にしている場合もある。
そういった点を鑑みて、JSONPで値を渡す方法が適していると考えた。
でも、2重アクセス・・・、うーむ。
コメント
コメントの投稿
« [AJAX] Javascriptでget・post用フォームを動的に作成 l Home l [Tool] Firefox3 のアドオン FireFTP »