Javascript Django中的AJAX表单提交
在我提交表单的过程中,我不断收到“notajax”作为响应。我必须错过一些小东西,但我看不见Javascript Django中的AJAX表单提交,javascript,jquery,python-3.x,django,ajax,Javascript,Jquery,Python 3.x,Django,Ajax,在我提交表单的过程中,我不断收到“notajax”作为响应。我必须错过一些小东西,但我看不见 class VideoLikeView(View): def post(self, request): if request.is_ajax(): message = 'Ajax' else: message = 'Not Ajax' return HttpResponse(message) AJA
class VideoLikeView(View):
def post(self, request):
if request.is_ajax():
message = 'Ajax'
else:
message = 'Not Ajax'
return HttpResponse(message)
AJAX代码如下所示:
$(function () {
$("#like-form").submit(function (event) {
$.ajax({
type: "POST",
url: form.attr('action'),
headers: {'X-CSRFToken': '{{ csrf_token }}'},
data: {'pk': $(this).attr('value')},
success: function(response) {
alert('Video liked');
},
error: function(rs, e) {
alert(rs.responseText);
}
}
});
});
});
和我的HTML:
<form id="like-form" action="{% url 'video-like' %}" method="post">
{% csrf_token %}
<input name="like"
type="hidden"
value="{{ video.id }}">
<button type="submit">
<span class="video-options ml-auto fas fa-heart fa-2x m-2"></span>
</button>
</form>
{%csrf_令牌%}
还有一个问题要补充;如果不使用
,如何在表单中使用
?我想使用fontawesome图标,但似乎我必须使用一个按钮来获取要提交的表单。我在互联网上找到了一个似乎可行的答案,但我不明白问题是什么。似乎需要某种类型的序列化(?)。。。不管怎么说,以下是有效的方法:
var frm = $('#like-form');
frm.submit(function () {
$.ajax({
type: frm.attr('method'),
url: frm.attr('action'),
data: frm.serialize(),
success: function (data) {
console.log('success');
},
error: function(data) {
console.log('failed');
}
});
return false;
});
很想听听人们为什么这样做有效,而不是以前的..尝试更改您的btn类型按钮并为事件单击添加ID: 因为放置submit按钮直接进入view.py,而不需要通过AJAX
<form id="like-form" action="{% url 'video-like' %}" method="post">
{% csrf_token %}
<input name="like"
type="hidden"
value="{{ video.id }}" id="id_pk">
<button type="button" id="id_btn">
<span class="video-options ml-auto fas fa-heart fa-2x m-2"></span>
</button>
还有你的view.py
def post(self, request):
if 'guardar' in request.POST['accion']:
print("")
尝试添加头
X-Requested-With
:XMLHttpRequest
似乎没有帮助。您可以检查请求头中是否存在头吗?当我print(request.headers)
我在itOk内部获得{“Cookie”:“csrftoken=cizmnklwxp7yqussiyzk8zg3tbkq0i0iwklzjd9gfeht3ci4cpk0jwwwjkqnw;”
,从这件事开始,我在周围挖了2个小时才让它开始工作。我会发布答案,但我不明白为什么,所以也许你可以帮我理解。。。
def post(self, request):
if 'guardar' in request.POST['accion']:
print("")