我想在django中通过dajax技术添加评论,但这些东西不起作用。你可以帮我解决这个问题吗?或者在这个例子中说明如何使用dajax。
ajax.py
@dajaxice_register
def add_comment(request):
`if request.method == 'POST':
post_id = request.POST['post_id']
post_obj = Post.objects.get(id = post_id)
error = {}
iweb_obj = post_obj.topic.iweb
content = request.POST['content']
img = request.POST['img']
if len(content) == 0:
error[content] = 'Write something'
else:
new_comment = Comment(img=img, post=post_obj, content=content, author=request.user, pub_date=datetime.datetime.now())
new_comment.save()
comment = render_to_response('comment.html',{'comment':new_comment})
dajax = Dajax()
dajax.assign('#post-' +int(post_id)+ ' comments', innerHTML, comment)
return dajax.json() `
HTML post代码,其中应添加注释。
table width="100%" id="post-{{ post.post.id }}"
帖子在这里
ul class="comments"
{% include "comments.html" %}
/ul
/table
JS代码,但是comment_form在另一个模板中。
$('.comment_form form').submit(function() {
`var form = $(this);
if($('textarea', form).val().length > 1) {
Dajaxice.project.add_comment(Dajax.progress,{});
$('textarea', form).val('');
}
}
)});`
答案 0 :(得分:0)
一些实际的错误消息会有所帮助 - “这些东西不起作用”是一种与神秘的Dajax错误消息“出错”的匹配,但也许你可以提供一些额外的信息。
我注意到你的js提交功能有:
Dajax.progress // which should be Dajax.process
Firebug或Chrome的控制台应该可以帮助您解决这样的错误
答案 1 :(得分:0)
如果不查看完整的代码,很难确切地看出出了什么问题,但从上面的内容可以看出,我可以看到几个问题:
您不应使用render_to_response
生成comment
的值。与正常的Django视图不同,在这里您返回一个HttpResponse,在这里您使用Dajax.assign
将HTML元素的实际内容设置为字符串。幸运的是Django只提供了你需要的模板渲染功能:render_to_string
。改用它。
在Dajax.assign
行中,您使用的选择器,例如'#post-23 comments'
看起来与HTML不对应,其中comments
是一个类而不是元素名称。
在同一行中,innerHTML
应为'innerHTML'
(即引用)。
在提及烤面包机时,Dajax.progress
应为Dajax.process
。
对于以类似方式使用Dajaxice / Dajax的带注释的示例,您可能会发现我对Django and Ajax - What can I do?的回答很有帮助。