通过Ajax返回呈现的Html [英] Returning Rendered Html via Ajax

查看:118
本文介绍了通过Ajax返回呈现的Html的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试通过Ajax调用返回html,我的视图中有以下代码片段

 如果请求.is_ajax():
t = loader.get_template('frontend / scroll.html')
html = t.render(RequestContext({'dishes':dishes})
return HttpResponse .dumps({'html':html}))

和我的Ajax

  $ .ajax({
type:POST,
url:/ filter_home,
data: {'name':'me','csrfmiddlewaretoken':'{{csrf_token}}'},
success:function(data){
$('。row.replace').html );
}
});

它会抛出以下错误

 异常值:'dict'对象没有属性'META'
异常位置:/ opt / bitnami / apps /第39行中的django / lib / python2.7 / sitepackages / django / core / context_processors.py

我做错了什么?

解决方案

您的代码有一些问题:



您需要使用 render_to_string



您也不需要将HTML转换为json,因为您直接替换内容。



将所有这些组合在一起:

  from django.template.loader import render_to_string 

if request.is_ajax():
html = render_to_string('frontend / scroll.html',{'dishes':dishes})
return HttpResponse(html)

在您的前端,您需要:

  $。ajax({
type:POST,
url:/ filter_home,
data:{'name':'me','csrfmiddlewaretoken':'{{csrf_token}}'},
success:function a){
$('。row.replace')。html(data);
}
});


I am trying to return html via and Ajax call and I have the following snippet of code in my view

if request.is_ajax(): 
t = loader.get_template('frontend/scroll.html')
html = t.render(RequestContext({'dishes': dishes})
return HttpResponse(json.dumps({'html': html}))

and my Ajax

  $.ajax({
           type: "POST",
           url: "/filter_home", 
           data: {'name': 'me', 'csrfmiddlewaretoken': '{{csrf_token}}'},
           success : function(data) {
                $('.row.replace').html(data);
            }
   });

and it throws the following error

Exception Value:    'dict' object has no attribute 'META'
Exception Location: /opt/bitnami/apps/django/lib/python2.7/sitepackages/django/core/context_processors.py in debug, line 39

what am I doing wrong?

解决方案

There are a few issues with your code:

You need to use render_to_string.

You also don't need to convert your HTML into json because you are replacing the contents directly.

Putting all this together you have:

from django.template.loader import render_to_string

if request.is_ajax():
    html = render_to_string('frontend/scroll.html', {'dishes': dishes})
    return HttpResponse(html)

In your front end, you need:

$.ajax({
        type: "POST",
        url: "/filter_home", 
        data: {'name': 'me', 'csrfmiddlewaretoken': '{{ csrf_token }}'},
        success : function(data) {
             $('.row.replace').html(data);
         }
});

这篇关于通过Ajax返回呈现的Html的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆