【发布时间】:2012-05-10 15:15:09
【问题描述】:
我有一个返回 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 新手,这让我感到非常困惑。
我希望有人能解释一下!
【问题讨论】:
标签: django jquery django-views