3つのモデルの連鎖オブジェクトを返すビューがあります
def test(request):
output=itertools.chain(
model1.objects.all(),
model2.objects.all(),
model3.objects.all()
)
return render_to_response('test.html', {'output':output})
htmlに、アンカーとjQueryスクリプトを追加しました。これにより、#outputがmodel1からの新しい値に置き換えられます。
<html>
<head>...</head>
<body>
<script>
$(document).ready(function() {
$("#switch").click(function() {
$.ajax({
url: $(this).attr("href"),
success: function(result) {
//whatever I put here is not triggered
}
});
});
});
</script>
<a id="switch" href="?model=1">switch to model 1</a>
<div id="output">
{% for item in output %}
<div id="{{item}}">
{{item}}
</div>
{% endfor %}
</div>
</body>
</html>
div#outputを別のテンプレートoutput.htmlに入れて、views.pyを次のように変更しようとしました。
def test(request, template='test.html'):
if request.GET.get('model'):
output=model1.objects.all()
else:
output=itertools.chain(
model1.objects.all(),
model2.objects.all(),
model3.objects.all()
)
if request.is_ajax(): template='output.html'
return render_to_response(template, {'output':output})
ただし、リンクをクリックするたびに、ページ全体が更新されます(model1の新しい値で)。
Operaはoutput.htmlだけを返します
これに3日以上苦労していて、ImはAjaxを初めて使用しましたが、これは私にとって非常に混乱しています。
誰かが光を当てることができるといいのですが!