0

我想在 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 邮政编码。 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('');

                }
            }

     )});`
4

2 回答 2

0

一些实际的错误消息会有所帮助 - “这个东西不起作用”与神秘的 Dajax 错误消息“出现问题”有点匹配,但也许你可以提供一些额外的信息。

我确实注意到您的 js 提交函数具有:

Dajax.progress   // which should be Dajax.process

Firebug 或 Chrome 的控制台应该可以帮助您发现类似的错误

于 2012-07-17T04:18:36.697 回答
0

如果不查看完整的代码,很难确切地看到出了什么问题,但是从上面显示的内容来看,我可以看到几个问题:

  1. 您不应该使用render_to_response来生成comment. 与返回 HttpResponse 的普通 Django 视图不同,这里Dajax.assign用于将 HTML 元素的实际内容设置为字符串。幸运的是 Django 只提供了你需要的模板渲染功能:render_to_string. 改用那个。

  2. 在该Dajax.assign行中,您正在使用的选择器,例如'#post-23 comments',它看起来不像对应于 HTML,其中comments是类而不是元素名称。

  3. 在同一行中,innerHTML应该是'innerHTML'(即引用)。

  4. 正如 toasterleavings 提到的,Dajax.progress应该是Dajax.process.

对于以类似方式使用 Dajaxice/Dajax 的注释示例,您可能会找到我对Django 和 Ajax 的回答——我能做什么?有帮助。

于 2012-07-31T13:17:05.863 回答