0

我对此比较陌生,但我正在努力解决问题。我想深入了解事物的运作方式。

话虽如此,我一直试图让 Django 使用 ajax 钩子发表评论。

我以为我快要做到这一点了,但到目前为止还没有。我能够编写一个视图来保存已发布的评论,然后将我重定向到我的主页。我希望能够使用 ajax,以便评论以 facebook 风格发布。

def add_comment(request, pk):
  if request.method == 'POST' and request.is_ajax():
    comment_form = CommentForm(request.POST)
    if comment_form.is_valid():
      comment = comment_form.save(commit=True)
      comment.save()
    json = simplejson.dumps(comment, ensure_ascii=False)
   return HttpResponse(json, mimetype='application/json')
  return render_to_response(simplejson.dumps('{{ post.id }}', {'comment': comment,}), context_instance=RequestContext(request), mimetype='application/json')

这个观点现在很粗略。我没有对 json 的任何调用,但是,阅读这可能是要走的路。

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script></javascript>
<script type="text/javascript">
  $(document).click(function()
  {
   $('#comment_form').submit(function()
   {
    var dataString = $('#comment_form').serialize();
    $.ajax({
      type: 'POST',
      url: '{{ post.id }}',
      data: dataString,
      success: function(data){
        $('{{ post.id }}').html(data);
      },
    });
    return false;
    });
  });

</script>

 <form action="" method="POST" id="comment_form">{% csrf_token %}
    <div id="cform">
      Name: {{ form.author }}
      <p>{{ form.body|linebreaks }}</p>
    </div>
    <div id="submit"><input type="submit" value="Submit"></div>
  </form>
4

1 回答 1

0

感谢您的回复,下次我一定会留下更详细的帖子。我的问题出在 jquery 脚本中。我试图将 dataString 作为表单数据传递给视图,但它是一个 DOM 对象而不是实际的表单数据。这是最终的工作脚本。

$(document).ready(function() {
  $('#comment_form').submit(function(e) {
  e.preventDefault();
  $.ajax({
    type: 'POST',
    url: '{% url art.views.post %}',
    data: $('#comment_form').serialize(),
    dataType: 'json',
    success: function() {
      location.reload();
$('#comment_form').get(0).reset();
  },
 });
 return false;
 });
});
于 2012-03-01T08:58:42.140 回答