django - 如何将html的一部分呈现为ajax响应

时间:2013-04-19 16:22:37

标签: python ajax django django-templates

我陷入了这个问题。我有一个页面,用户可以搜索并转到搜索结果页面。现在我希望该用户能够按某些条件对结果进行排序,我正在使用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))

但是现在,一旦我对结果进行排序,页面上没有任何变化。为什么带有新查询集的加载模板不会出现?我想,如果没有ajax的done功能,页面将被替换。

有人可以解释一下为什么会这样吗?

非常感谢

2 个答案:

答案 0 :(得分:5)

在您的浏览器请求检查器中验证您正在接收您希望从ajax调用获得的数据之后,您应该告诉jQuery ajax当您从服务器获取新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);
    }
 });
}

答案 1 :(得分:0)

function sort(){
 var sortid = $('#sort').val().toLowerCase();
 $.ajax({
    type:"GET",
    url: "/sort/",
    data: {sortid:sortid}
success: function(return_data){
    $('#tag-id').append(return_data);
    }
 });
}

这也可以试试!