2

jquery で $.post を使用して、別のページにリクエストを送信しています。

<body>
<form id="saveuserFeedback" class="form" action="{% url saveFeedback  %}" method="post"        class="ajax"> {% csrf_token %}
...
...
<input type="submit" class="btn" id="Like" value="Like"/>
<input type="submit" class="btn" id="Discuss" value="Dislike"/> 
...
</form>
<script type="text/javascript">
$(document).ready(function () {
    $("#Like").click(function (e) {
        e.preventDefault();
        alert('Like clicked');
        console.log('reached here');
        $.post("saveFeedback2/", {
            csrfmiddlewaretoken: document.getElementsByName('csrfmiddlewaretoken')[0].value,
            feedbackStatus: "Like",
            feedbackNoteID: "12345"
        });
    });
    $("#Dislike").click(function (e) {
        e.preventDefault();
        alert('Dislike clicked');
        console.log('reached here');
        $.post("saveFeedback2/", {
            csrfmiddlewaretoken: document.getElementsByName('csrfmiddlewaretoken')[0].value,
            feedbackStatus: "Dislike",
            feedbackNoteID: "12345"
        });
    });
});
</script>

ただし、saveFeedback2 では、データが使用できないようです。csrfmiddlewaretoken が渡されたことしかわかりません。

 def saveFeedback2(request):
        print request.POST

QueryDict: {u'csrfmiddlewaretoken': [u'18f0f434b876a3b742371c6b43222b4a']}>

以下はurls.pyにあります

url(r'saveFeedback2/$', saveFeedback2 , name='saveFeedback2'),

どんな助けでも感謝します。ありがとう!

4

1 に答える 1

4

その理由は、preventDefaultフォームの送信を行っていないためです。あなたはイベントのためにそれをやっていますclick(これは必須ではないと思いますが、とにかく..)。

これをあなたの$(document).ready()

$('#saveuserFeedback').submit(function(e){
     e.preventDefault();
});

よりクリーンなアプローチはlike、 とdislikeをラジオ ボタンとして使用し、フォームの送信時に a を実行してdata = $('form').serialize()、それを$.post

于 2013-06-27T18:43:31.850 に答える