我在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'),
任何帮助表示赞赏。 谢谢!
答案 0 :(得分:4)
原因是,您没有为表单提交preventDefault
。你正在为click
事件做这件事(我认为这不是必需的。但无论如何......)。
在$(document).ready()
$('#saveuserFeedback').submit(function(e){
e.preventDefault();
});
更干净的方法可能是将like
和dislike
作为单选按钮,然后在表单提交上执行data = $('form').serialize()
然后将其发送到$.post
< / p>