我想用AJAX和JQuery(在Django中)刷新我的页面的某个部分。我怎么才能让它重新显示只有div,而不是整个页面。使用JQuery和AJAX刷新Django的div
// In my template
var tag_cloud_floor = function(floor) {
$.ajax({ url: "/{{ user }}/{{ tag }}/",
data: {tag_cloud_floor: floor},
type: 'POST',
success: function(data) {
$('#tag_cloud).html(data);
},
});
};
这是我的看法。
@login_required
def tag_page(request, username, tag):
if username == request.user.username:
tags = request.user.userprofile.tag_set.all()
if request.is_ajax() and request.POST:
floored_tags = []
for t in tags:
if t.item_set.all().count() >= int(request.POST['tag_cloud_floor']):
floored_tags.append(t)
tags = floored_tags
tag = Tag.objects.get(title=tag)
items = tag.item_set.all()
return render_to_response("tag_page.html", { 'user': request.user ,
'tag': tag,
'tags': tags,
'items': items })
else:
return HttpResponseRedirect('/' + request.user.username + '/')
目前,它将整个html页面放到#tag_page div中。我希望它用新的#tag_page div替换旧的#tag_page div。如果我用替换$('body').html(data);
它刷新整个页面应该如何,但我刷新整个页面是浪费。
如果有更好的方法来做到这一点,让我知道。
另外,是否有可能将ajax工作分开到与初始页面加载视图不同的视图? – Josh 2010-11-18 18:09:04
当然,您可以将功能分开;使用单独的URL创建单独的视图,并使该视图返回标记数据。现在,无论是以JSON格式返回并重新构建页面上的标记,还是将其作为HTML片段返回并将其插入页面,都取决于您。如果你计划在你的网站上使用很多AJAX,请查看[django-piston](http://bitbucket.org/jespern/django-piston/wiki/Home) – eternicode 2010-11-19 20:06:53