Hatena::ブログ(Diary)

Webと文字

よければ、はてブしてください。( ´∀`) George.Nagaoka@gmail.com

JavaScript IME:海外からブラウザで日本語を変換 新URL 旧URL:
多言語入力ブックマークレット:ブラウザでロシア語、中国語、アラビア語・・・
【軍曹が】携帯電話開発の現状【語る】をAA化した
AAのデータベース
趣味のページ

2007-09-11

postURLについての追記

2007-09-09の記事でjavascriptの通信用関数が2つあること-getURLに対してpostURLがあること-を書いた。そのpostURLを使う上で注意すべきことを書く。

送信するデータについて

postURL関数の第2引数に入れられたデータはそのままサーバーにpostされる。すなわちdata1=xxx&data2=yyyといった文字列はdata1=xxx&data2=yyyのまま受け取られる。

phpでデータを受信する

phpでpostされたデータを取得する際、通常は$_POST['elementname']といった方法を使う。しかしpostURLから送信されたデータは$HTTP_RAW_POST_DATAに格納されている。

参考資料

  1. Dynamically updating SVG based on serverside information.

JSON

postURL関数を使ってJSONを送る

postURL*1を使ってデータを送信する場合、データに名前を付けて送信することが出来ない。そこでデータをJSONの文字列として送り、サーバー側で配列に直すことを考える。JSONについては参考資料1に詳しい。

JSONを文字列に直す

JavaScriptJSONを文字列に直すには参考資料1のサイトで配布されているjson.jsを使用するのが簡単でいい。以下の様にしてJSONを文字列に直すことが出来る。ただし日本語は使用すると文字化けが発生する。

var requestData = [
	{
		"fontName":"msp_gothic",
		"unicode":["87","101","98","12392","25991","23383"],
	},
	{
		"fontName":"ms_gothic",
		"unicode":["87","101","98","12392","25991","23383"],
	}
]

var myJSONText = requestData.toJSONString();
/*(実際には改行はない)
[{"fontName":"msp_gothic","unicode":["87","101","98","12392","25991","23383"]},
{"fontName":"ms_gothic","unicode":["87","101","98","12392","25991","23383"]}]
*/

JSON配列に直す

JSON文字列をJSONに戻すライブラリは多数の言語で提供されている。*2ここではPHPJsphonというライブラリを使ってJSON文字列をJSONに戻してみる。Jsphonは参考資料2のサイトで公開されている。

<?
require_once('Jsphon.php');

/* ------- エンコード ------- */
$json = $HTTP_RAW_POST_DATA;
try {
    $json = Jsphon::decode($json);
} catch (Jsphon_Exception $e) {
    die($e->getMessage());
}

echo $json[0]['unicode'][0];
//87
?>

*1:postURLについては2007-09-09の記事を参照のこと

*2:参考資料1の一番下を見ること