2007年11月16日(Fri) [長年日記]
_ 入門 JSON 3 -- JSONP とコールバック関数
JSONP (JSON with Padding)というのは JSON のデータフォーマットにちょっとした記述を加えて JavaScript の関数として呼び出せるようにしたものです。
メモメモ。
ここで紹介されてるjsr_class.jsを使って,楽天API経由で取得した書影データを利用できるようにしてみよう。
_ クッキングパパ 単行本-収録エピソード 検索 (2)
クッキングパパ 単行本-収録エピソード 検索に,フリーキーワードによるタイトルの検索機能を付けてみた。
実行するとApacheのプロセスがなんのエラーも吐かずにSegmentation faultで死んでしまって動かない。文字列のワイルドカード検索を入れたのがマズいんであろうことは想像がついたが,直し方が分からんので,まずはPDOのマニュアルを参照。そしたら,例に挙げられるほどの典型的な間違いを犯していたことが発覚↓
例 11. プレースホルダの間違った使用法
<?php
$stmt = $dbh->prepare("SELECT * FROM REGISTRY where name LIKE '%?%'");
$stmt->execute(array($_GET['name']));
// プレースホルダは、値全体に対して使用しなければなりません
$stmt = $dbh->prepare("SELECT * FROM REGISTRY where name LIKE ?");
$stmt->execute(array("%$_GET[name]%"));
?>
もうね,まさにこの通りの間違いだったさ orz
で,この例の通りに直して,無事動いた。
_ クッキングパパ 単行本-収録エピソード 検索 (3)
楽天ウェブサービスの楽天書籍検索APIを使って,JSONPで書影を出すようにしてみた。
取得したデータへのアクセスはJSONPですんなり出来たんだが,最初,品切商品のデータを取得するのにavailability=0の指定が必要なのに気づかず,品切の巻の番号でテストして「なんでデータを参照できんのだっ?!」と1時間ほどハマる ^^;
この点を修正すると同時に,戻り値のHeader.Statusを参照してデータ取得に成功した(値が'Success'である)場合だけ処理するようにもした。
この程度の間違いでサーバプロセスを落とすんじゃあ、仕事ではつかえんなぁ PDO.誰かがちょっとしたコーディングミスしただけで落ちるようでは、怖くてチームで1サーバとかで運用するきにならんもの。1人1サーバ使えってことかの〜〜。