【问题标题】:$.post to a django view does not pass the data$.post 到 django 视图不传递数据
【发布时间】:2013-06-25 09:39:52
【问题描述】:

我在 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'),

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

【问题讨论】:

  • 从输入按钮中删除type="submit",看看是否有帮助。

标签: jquery ajax django post django-templates


【解决方案1】:

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

将此添加到您的$(document).ready()

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

更简洁的方法可能是将likedislike 作为单选按钮,然后在提交表单时,执行data = $('form').serialize(),然后将其发送到$.post

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-24
    • 2018-08-21
    • 1970-01-01
    • 1970-01-01
    • 2020-03-19
    • 2019-02-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多