我在 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'),
任何帮助表示赞赏。 谢谢!
最佳答案
原因是,您没有为表单的提交执行 preventDefault
。您正在为 click
事件执行此操作(我认为这不是必需的。但无论如何..)。
将其添加到您的$(document).ready()
$('#saveuserFeedback').submit(function(e){
e.preventDefault();
});
更简洁的方法可能是将 like
和 dislike
作为单选按钮,然后在表单提交时执行 data = $('form') .serialize()
然后将其发送到 $.post
关于jquery - $.post 到 django View 不传递数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17350742/