このような仕組みはAjaxを利用して実装するのだと自分では思っています。
そこでPythonとAjaxの連携の情報がを検索したのですが、あまり無いようでよく分かりませんでした。
自分はAjaxを実装した事がありません。
Ajaxと言えば、JSON化されたデータが書かれたサーバ内のファイルを処理が発生した際に非同期で取得しにいく処理だと理解しております。
PHPの情報では、XMLHttpRequestを利用してJSONデータのやりとりを行うようですが。
どのようにPythonでAjaxと連携すればいいのか教えていただけないでしょうか?
簡単でも良いのでコードなど頂けたら幸いです。
また、上記のことを考えている際に以下の疑問が出てきました。
PythonからデータをJavaScriptに送れれば別にAjaxを実装する必要も無いのかなとも思いました。
以上長くなりましたがアドバイスいただけたら幸いです。
宜しくお願いいたします。
環境:
Python2.6
Django1.6.2
jQuery最新版
普通の HTML も、Ajax によるデータの取得も、Webサーバ側は、
だけです。
Django を使ってるということは、response header に対する意識は、あまりしたことは無いでしょうか?
サーバ側の Python の例は、こちら。
http://rayed.com/wordpress/?p=1508
Django を使わず、素の CGI として動かすときの Python スクリプトは、こんな感じ。
http://datatables.net/forums/discussion/9920/python-backend-json-dump-via-jquery-ajax-call
クライアント側は、jQuery を使って良いなら、getJSON メソッドを使うのが良いと思います。
http://hayageek.com/jquery-ajax-json-parsejson-post-getjson/#get-json
もし、jQuery を使わないなら、こんな感じ。
https://mathiasbynens.be/notes/xhr-responsetype-json
PythonからデータをJavaScriptに送れれば別にAjaxを実装する必要も無いのかなとも思いました。
「送れれば」というのが、オートコンプリートを動作させるページを表示するときの Python スクリプトで、オートコンプリートに必要なデータをすべて埋め込んでおく、ということであれば、それも、ひとつのやり方だと思います。
必要なデータのサイズが、たいした大きさではない、という条件は付きます。
オートコンプリートの機能を使う必要が無い場合でも、毎回データが送られるわけですから。
データの取り直しは、通常はページのリフレッシュが必要です。
一度、表示されたページをリフレッシュすることなく、Python スクリプトを経由してデータを取り出す、という方法(のひとつ)が Ajax です。
そうです。
Python で、何種類もページを用意するときと同様に、そのうちのひとつ(というか、Ajax で実現したいことの数だけ)を Ajax ように実装します。
まず、Ajax からではなく、ブラウザからリクエストを投げてみて、レスポンスを確認してください。
新しく Ajax 用に用意したリクエストの URL が http://mysite.com/ajax.html だったら、ブラウザのアドレスバーから、その Ajax 用の URL を打ち込んで、画面に、自分が出力してるであろう JSON 形式のデータが表示されることを確認してください。
これが正しければ、javascript 側の実装が、どこかまずいのだと思います。
2014/10/02 17:40:00まずは、Python 側なのか、javascript 側なのかを切り分けましょう。
この度はまことにありがとうございました。
2014/10/03 00:24:15def ajax()に対応するページを作成してgetJSONにて読み込んでみたところ上手くデータを取得することが出来ました。
親切丁寧に教えていただきましてありがとうございました。