人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

ajax(jQuery)→cgiデータベース検索(Ruby)→ブラウザ表示ができない
イメージとしては商品検索のアプリケーションのようなもので、フォームに入力されたテキストを含む商品名と、そのイメージURLをデータベースから検索し、結果を表示する、といったものです。firebugではエラー表示がないので、cgi出力の形式やjQueryのレスポンスの受け方、表示の部分に問題があると推測しているのですが、何処が間違っているのか解りません。レスポンスがあるので、データベース検索の処理もうまくいっています。
コードをgistに貼付けたので、お手数ですがこちらをご覧になって頂き、ご指摘頂けませんでしょうか?
READMEファイルに補足情報を記載しています。
html,javascript→https://gist.github.com/2317913
cgi(Ruby) →https://gist.github.com/2317927
README →https://gist.github.com/2317970
何卒宜しくお願いします。

●質問者: TaKa
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● a-kuma3
●500ポイント ベストアンサー

ajax_db.rb の以下のくだり

print cgi.header({ "charset"=>"UTF-8" })
cgi.out("application/json") {res.to_json}

の二行を、こう、かな。

cgi.out ({ "type" => "application/json", "charset" => "UTF-8" }) {
 res.to_json
}



CGI クラスの out メソッドのソース。
https://github.com/ruby/ruby/blob/trunk/lib/cgi/core.rb

 def out(options = "text/html") # :yield:

 options = { "type" => options } if options.kind_of?(String)
 content = yield
 options["length"] = content.bytesize.to_s
 output = stdoutput
 output.binmode if defined? output.binmode
 output.print header(options)
 output.print content unless "HEAD" == env_table['REQUEST_METHOD']
 end

out メソッドの中で print header されているので、ヘッダが二重にレスポンスとして返り、json 形式にならなくなってるのが、きちんと動かない原因。


TaKaさんのコメント
ありがとうございます。動きました。レスポンスは一回で返さないといけないんですね。助かりました。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ