dak ブログ

プログラミング、サーバーの設定のなどの備忘録。レゴの写真も。

script タグで json

2007-02-10 23:24:25 | emacs
サーバと通信すると、同一のドメインのサーバに限定されてしまいますが、script タグなら他ドメインのサーバの JavaScript を読み込むことができます。
動的に script タグを生成して JSON 形式のデータを読み込めば、ドメインを意識せずに ajax を実現できます。

script タグで script オブジェクトを生成しておいて、
<script id="..."></script>
動的に script タグを生成して、この script オブジェクトを新しい script オブジェクトに置換します。

var new_script = document.createElement("script");
new_script.id = script_id;
var script.parentNode.insertBefore(new_script, script);
script.parentNode.removeChild(script);
script = news_script;
script.src = url;

サーバが返すデータは以下のような JavaScript の代入文です。
data = ...;

データに日本語などマルチバイトの文字が含まれる場合には、これらの文字列を uXXXX のように Unicode の文字コードにエンコードしておくと文字化けしません。

それから、script.src = url を実行してから実際にサーバのデータを読み込むには少し時間がかかります。
Firefox の場合には script に onload イベントを指定することができますが、IE の場合には onload イベントが使えないようです。
そのため IE ならデータがダウンロードされたかをチェックする関数を作成して、データがダウンロードされたら次の処理を実行するようにする必要があります。
それにはサーバから返される json オブジェクトが、リクエストしたデータと一致しているかをチェックできるようにしとくとよいでしょう。

setTimeout("wait_json()", interval);

function wait_json() {
if (json データがダウンロードされていたら) {
{次の処理};
}
else {
setTimeout('wait_json()', interval);
}
}
ジャンル:
ウェブログ
キーワード
エンコード 文字コード マルチバイト
コメント (0) |  トラックバック (1) |  この記事についてブログを書く
Messenger この記事をはてなブックマークに追加 mixiチェック シェア
« iffame で読み込... | トップ | GD::Graph で日本... »

コメント

コメントはありません。

コメントを投稿

 ※ 
コメント利用規約に同意の上コメント投稿を行ってください。
※文字化け等の原因になりますので、顔文字の利用はお控えください。
下記数字4桁を入力し、投稿ボタンを押してください。この数字を読み取っていただくことで自動化されたプログラムによる投稿でないことを確認させていただいております。
数字4桁

トラックバック

この記事のトラックバック  Ping-URL
  • 送信元の記事内容が半角英数のみのトラックバックは受け取らないよう設定されております。
  • ※ブログ管理者のみ、編集画面で設定の変更が可能です。
[JavaScript]動的にscriptタグを生成する (Bugle Diary)
ことってできるのかなーと思って、調べました。

あわせて読む