クライアントとサーバの通信をJSONに決めてしまうと、関数にオブジェクトを渡して、返信をオブジェクトで取り出すことができるので、Ajax部分のプログラムを簡略化できる。
通信を分担する関数にオブジェクトを引数として渡して、戻り値をオブジェクトで得るような方式を考えていたが、Ajaxは関数呼び出しよりもっと高度な非同期通信なので普通の関数のような考え方はできない。とりあえず prototype.js の Ajax.Request を利用して、オブジェクトを引数にする jsonAjax(url, obj, callback) 関数を作った。url は処理を依頼する PHP ファイル、obj は送信するためのオブジェクト、callback は返信が来たときの処理関数。jsonAjax 関数は使いまわしできるように jsonajax.js というファイルにした。デモプログラムは、 prototype.js json2.js jsonAjax.html jsonajax.js echoback.php で動作する。 これで一応Ajaxのプログラムを作るための部品がそろった。もう少し簡単になると良かったのだが、実際のAjaxははるかに高度な仕組みで動いているのだろうから仕方がない。 注意しないといけないのは、文字コードのエスケープ処理の問題だ。デモの echoback.php 関数では、単にエコーバックするだけでなく、stripslashes() 関数を使ってアンエスケープ処理をしている。最初エスケープ処理をしないで単にエコーバックするようにしていたら、クライアントから送った hello という文字列が \"hello\" になって帰ってきた。どの段階のエスケープ処理が問題なのかは調べていないが、実際にプログラムを書くときは注意する必要があるかもしれない。
by tnomura9
| 2007-11-03 21:29
| XAMPP
|
Comments(0)
|
カテゴリ
新型コロナウイルス 主インデックス Haskell 記事リスト 圏論記事リスト 考えるということのリスト 考えるということ ラッセルのパラドックス Haskell Prelude Ocaml ボーカロイド 圏論 jQuery デモ HTML Python ツールボックス XAMPP Ruby ubuntu WordPress 脳の話 話のネタ リンク 幸福論 キリスト教 心の話 メモ 電子カルテ Dojo JavaScript C# NetWalker ed と sed HTML Raspberry Pi C 言語 命題論理 以前の記事
最新のトラックバック
最新のコメント
ファン
記事ランキング
ブログジャンル
画像一覧
|
ファン申請 |
||