【问题标题】:django - how to render part of html as ajax responsedjango - 如何将部分 html 呈现为 ajax 响应
【发布时间】:2013-04-13 02:47:47
【问题描述】:

我陷入了这个问题。我有一个页面,用户可以搜索并转到搜索结果页面。现在我希望该用户能够按某些标准对结果进行排序,我为此使用 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 功能,页面将被替换。

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

非常感谢

【问题讨论】:

    标签: python ajax django django-templates


    【解决方案1】:

    在浏览器的请求检查器中验证您正在从 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);
        }
     });
    }
    

    【讨论】:

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

      这个你也可以试试!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-10-31
        • 2021-04-09
        • 2019-11-02
        • 1970-01-01
        • 2020-05-14
        • 2015-09-06
        • 1970-01-01
        • 2023-03-05
        相关资源
        最近更新 更多