2012-02-24 3 views
0

私は比較的新しいですが、私は物事を通して働いています。私は物事の仕組みをしっかりと理解したい。djangoからajaxでコメントを投稿する場合は

私はDjangoにajaxフックでコメントを投稿しようとしています。

私はこれを達成するのに近いと思ったが、これまでのところはなかった。投稿されたコメントを保存してメインページにリダイレクトするビューを作成することができました。私はコメントがFacebookのスタイルで投稿するように、ajaxを使用できるようにしたい。

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> 
+0

コードを投稿すると、簡単にヘルプが表示されます。それがなければ、私ができることは、あなたのためにGoogleを叩くことです:http://brandonkonkle.com/blog/2009/feb/16/ajax-django-comments-jquery/ – RyanBrady

+0

私はちょうど約数分のコードを追加しようとしていました前に、サービスプロバイダーは泥棒の下に降りた。 – tijko

+0

途中でリンクをありがとう。私はこのページを読んだことがあります。他の人たちと一緒に、ajax djangoの検索語を思いついて(その順序で、または他の多くのもので)コメントを投稿します。主な問題はビューにあります。私はコメントを指示するためにposts.id/foreignkeyを使用しています。 – tijko

答えて

0

返信いただきありがとうございます。次回はもっと詳細な投稿を残しておきます。私の問題はjqueryスクリプトにありました。実際のフォームデータではなく、DOMオブジェクトのときは、フォームデータとしてdataStringをビューに渡そうとしていました。ここに最終的な作業スクリプトがあります。

$(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; 
}); 
}); 
関連する問題