使用AJAX html()加载Django模板导致不需要的文本

时间:2015-02-05 13:47:33

标签: javascript jquery ajax django

我正在通过Ajax加载模板。

这就像客户端一样:

function AJAX_query(query_JSON){
    $.ajax({
        type: 'GET',
        url: '/ajax_request/',
        data: query_JSON,
        datatype: "json",
        success: function(data){
            $("#search_results").html(data);
        },//success
        error: function(){
            alert("AJAX - failure.");
        }//error
    });//.ajax
};//AJAX_query

回到服务器我有一个带分页的简单模板渲染。

def Selector_Query(request, query):
   query = query.split(",")
   # Filter model based on query
   some_models = Some_Model.objects.all().filter(whatever = query[n])

   # PAGINATION
   paginator = Paginator(some_models, 30)

   try:
        some_models = paginator.page(query[n])
   # If page is not an integer, deliver first page.
   except PageNotAnInteger:
        some_models = paginator.page(1)
   # If page is out of range (e.g. 9999), deliver last page of results.
   except EmptyPage:
       some_models = paginator.page(paginator.num_pages)

   last_page = paginator.num_pages

   context = RequestContext(request, {
      "some_models":some_models,
      "last_page":last_page,
      "page_number":query[n],
   })

   template = loader.get_template("some_folder/some_template.html")
   return HttpResponse(template.render(context))

当我收到数据时,总会出现在顶部:

Content-Type: text/html; charset=utf-8

如果我使用load()代替html(),则上述内容不再出现。 但是,据我所知,我不能使用load,因为load()需要一个url而我宁愿在没有url的情况下工作,因为我发送了复杂的参数。因此,首先是AJAX的全部原因。

知道为什么会这样,我该如何解决?

1 个答案:

答案 0 :(得分:1)

发现问题。

return HttpResponse(template.render(context))

需要

    return render_to_string("some_folder/some_template.html", context)