最近jQueryを学び始めましたが、今は.ajax()関数を使って遊んでいます。jQuery.ajax()へのアクセス方法Djangoビューのパラメータを取得する
私はDjangoのgetパラメータにアクセスする方法を理解できません。その後、私は私のテンプレートで
{{ ajaxGet }}
それを表示しようとする
@https_off
def index(request, template='index.html'):
request.session.set_test_cookie()
path=request.META.get('PATH_INFO')
defo=path[1:path[1:].find('/')+1]
request.session['defo']=defo
defo=request.session['defo']
# build the stream sorted by -pub_date
import itertools
chained=itertools.chain(
model1.objects.order_by('-pub_date').filter(),
model2.objects.order_by('-pub_date').filter(),
)
stream=sorted(chained, key=lambda x: x.pub_date, reverse=True)
ajaxGet=request.GET.get('param','dummy')
if request.is_ajax():
template='astream.html'
ajaxGet=request.GET.get('param',False)
renderParams={'defo':defo, 'stream':stream, 'ajaxGet':ajaxGet}
return render_to_response(template, renderParams, context_instance=RequestContext(request))
:
のjQuery & HTML::
<div id="browser">
<ul>
{% comment %}
Theres a script for each ctg. Each script fades out #astream, fades in #stream_loading and then it should display #astream with new values based on the GET param in ajax call
Prolly it wont work, but first I need to interact with the GET param in my views.py
{% endcomment %}
{% for ctg in ctgs %}
<script type="text/javascript" charset="utf-8">
(function($) {
$(document).ready(function() {
$("#stream_loading").hide()
$("#browse_{{ctg}}").click(function() {
$("#astream").fadeOut()
$("#stream_loading").fadeIn()
$.ajax({
type: "GET",
url: "/{{defo}}/?param={{ctg}}",
success: function() {
$("#stream_loading").fadeOut()
$("#astream").fadeIn()
}
});
});
});
})(jQuery);
</script>
<li><a id="browse_{{ctg}}" title="{{ctg}}">{{ctg}}</a></li>
{% endfor %}
</ul>
</div>
<div id="astream">
{{ajaxGet}} #just to see whats rendered
{% include "astream.html" %}
</div>
<div id="stream_loading">
loading stream, please wait ...
</div>
ジャンゴ
私のコードは次のようになりますB utは毎回「ダミー」としてレンダリングされます
私は適切なキーと値を持つget要求を見ることができます。
私はここで何が欠けていますか?
おかげ
コミュニティがあなたをより良く助けるために、全体のビューコードを投稿してください。 – Brandon
コードが 'if request.is_ajax()'ブロックに入っていないことは明らかです。そうでなければ 'ajaxGet'はその文字列ではなく' False'になります。だから、それはなぜそれを解決する必要があります。 –
はいサー!しかし、この問題の初心者である私にとって、is_ajaxに入っていないのはなぜなのですか?私はいくつかのコメントで説明を更新しました – marlboro