我正在学习Ajax,我遇到了一个小问题。
我正在尝试使用ajax向django后端提交POST请求。即使是警报也不会显示在屏幕上。正如我在测试django服务器shell中看到的,它甚至不提交POST请求。
代码:
<script type="text/javascript">
$('#btnLike').on('click', function(event) {
alert('ok');
$.ajax({
type: 'POST',
url: 'http://127.0.0.1:8000/backend/website/like', /* for testig */
data: {
csrfmiddlewaretoken: {% csrf_token %},
post_id = $('#post_id').val(),
},
});
});
</script>HTML表单:
<form onsubmit="return false">
{% csrf_token %}
<input type="text" name="post_id" value= {{post.pk}} hidden="hidden">
<button type="submit" name="btnLike" class="btn btn-info">Like</button>
</form>我知道我做错了什么,但我不知道是什么。
发布于 2016-12-30 04:13:16
您的选择器$('#btnLike')不正确,它正在查找带有id="btnLike"的按钮。
试试这个:
<button type="submit" id="btnLike" class="btn btn-info">Like</button>请确保在HTML中加载jQuery库,并将所有jQuery代码包装到
$(document).ready(function(){
//your code goes here
});发布于 2016-12-30 04:28:14
问题出在您的url值上。删除ip地址。使用相对寻址。还要把id放在你的按钮上。
$('#btnLike').on('click', function(event) {
alert('ok');
$.ajax({
type: 'POST',
url: 'backend/website/like', /* for testig */
data: {
csrfmiddlewaretoken: {% csrf_token %},
post_id = $('#post_id').val(),
},
});
});按钮HTML
<form onsubmit="return false">
{% csrf_token %}
<input type="text" name="post_id" value= {{post.pk}} hidden="hidden">
<button type="submit" id="btnLike" class="btn btn-info">Like</button>
</form>发布于 2016-12-30 15:18:53
作为参考:如果要序列化表单(根据yts的注释),则不需要在AJAX代码中显式包含csrf_token。但是如果你只使用AJAX,那么就像这样传入令牌:
csrfmiddlewaretoken: '{{ csrf_token }}',不
csrfmiddlewaretoken: '{% csrf_token %}',模板变量{{ csrf_token }}输出令牌字符串,例如。
'mytoken123456789'而标记{% csrf_token %}输出一个隐藏的HTML input元素:
<input type="hidden" name='csrfmiddlewaretoken' value='mytoken123456789' />您在上面的注释中提到的语法错误是因为它试图解析此输入元素,而不是令牌字符串。
https://stackoverflow.com/questions/41386525
复制相似问题