人気ブログランキング | 話題のタグを見る

Ajaxの通信をJSONに統一する。

クライアントとサーバの通信を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)
<< 2007年分の記事一覧 JSON.stringify(... >>