我有一个返回 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 天多,我是 Ajax 的新手,这让我感到非常困惑。
我希望有人能解释一下!