2011-07-01 19 views
5

AJAXを使用してサイトナビゲーションを作成しようとしています。私はさまざまなビュー(テンプレートで{% url name %}を使用して)へのリンクを持つナビゲーションメニューを持っています。私がやっていることは、AJAXを使ってページのコンテンツを読み込むことです。ロードしようとしているページのコンテンツはコンテンツブロック({% block content %})に囲まれています。DjangoでAJAXを使用してページを切り替える

また、このスニペットhttp://djangosnippets.org/snippets/942/が見つかりましたが、私が既に定義したビューを使用し、ajaxを使用してコンテンツを取得したいとします。

提案がありますか?

+0

あなたはdjango-pjaxで解決しましたか? –

+0

基本的に私はしました。 (1つのリクエストで複数のHTML要素を更新できるように、元のスクリプトをほとんど変更していない) –

答えて

6

django-pjaxは、この種のもののために作られています。

基本テンプレートで、ページ全体を含めるか、要求がajaxであるかどうかに基づいてblock contentのみを含めるだけです。

django-pjaxはjQueryを使用してAJAX呼び出しを行い、HTML5プッシュ状態APIを使用して履歴を操作します。これは非常に良い方法であり、IEの古いバージョンでも正常に機能します。

+0

これは実際にはかなりクールです。ありがとう –

+0

もしそれがDjango 1.2でも使用できるなら、それは素晴らしいでしょう。 – Paolo

3

{% block content %}のようなテンプレートタグは、AJAXが物事を見るまでにはかなり時間がかかりました。そして、あなたが必要なときに<div>をロードするために、この(jQueryの)コードのようなものを使用することができます

{% block content %} 
<div id="content"></div> 
{% endblock content %} 

:やりたいことのようなあなたのコンテンツブロックの名前付き<div>を、作成され

$("#content").load(url, data, loadComplete); 

urlはロードするURL(返されるHTMLはHTML)、dataはフォームデータ(存在する場合は省略可能)、loadCompleteはデータロード時に呼び出されるオプションの関数で、形式はfunction loadComplete(responseText, textStatus, XMLHttpRequest) {...}です。 jQueryを使用したくない場合でも、非縮小jQueryソースを取得して、その動作を確認することができます。

+0

私はそれがなくなったことを知っています、私はあなたが示唆したものと同様の部門を持っています。私がここでやりたいことは、既に定義されているビュー(ajaxリクエストなしで使用される)を使用し、コンテンツという名前のブロックのコンテンツのみを返すレスポンスを作成して、javascriptで処理してdivの内容 –

関連する問題