$ .post到django视图不会传递数据

时间:2013-06-27 18:34:47

标签: jquery ajax django post django-templates

我在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']}&gt;

以下是urls.py

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

任何帮助表示赞赏。 谢谢!

1 个答案:

答案 0 :(得分:4)

原因是,您没有为表单提交preventDefault。你正在为click事件做这件事(我认为这不是必需的。但无论如何......)。

$(document).ready()

中添加此内容
$('#saveuserFeedback').submit(function(e){
     e.preventDefault();
});

更干净的方法可能是将likedislike作为单选按钮,然后在表单提交上执行data = $('form').serialize()然后将其发送到$.post < / p>