我陷入了这个问题。我有一个页面,用户可以搜索并转到搜索结果页面。现在我希望用户能够根据一些标准对结果进行排序,我使用ajax进行排序,因为我不希望页面再次加载
我的ajax:
function sort(){
var sortid = $('#sort').val().toLowerCase();
$.ajax({
type:"GET",
url: "/sort/",
data: {sortid:sortid}
});
}
这是我的观点:
def sort(request):
sortid = request.GET.get('sortid')
ratings = Bewertung.objects.order_by(sortid)
locations = Location.objects.filter(locations_bewertung__in=ratings)
t = loader.get_template('result-page.html')
c = Context({ 'locs': locations })
return HttpResponse(t.render(c))
但现在,一旦我对结果进行排序,页面上就没有任何变化。为什么加载的模板没有呈现新的queryset?我想,如果没有ajax的
done
功能,页面将被替换。有人能解释一下为什么会这样吗?
谢谢
最佳答案
在浏览器的请求检查器中验证您正在接收来自ajax调用的预期数据之后,您应该告诉jqueryajax从服务器获取新html时如何处理它。
function sort(){
var sortid = $('#sort').val().toLowerCase();
$.ajax({
type:"GET",
url: "/sort/",
data: {sortid: sortid},
success: function(newData){
$('#selector-that-you-care-about').html(newData);
}
});
}