gpt4 book ai didi

javascript - 如何将 Django 的 CSRF token 添加到 jQuery POST 请求的 header 中?

转载 作者:数据小太阳 更新时间:2023-10-29 05:17:29 24 4
gpt4 key购买 nike

我正在尝试制作一个动态预填充字段的 Django 表单:也就是说,当从下拉菜单中选择一个字段 (checkin_type) 时,其他字段会自动预填充填充了相应的数据。为此,我想在选择下拉选项后立即向服务器发送 POST 请求。

到目前为止,我已经尝试了以下模板(在 https://docs.djangoproject.com/en/2.0/ref/csrf/ 之后):

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/js-cookie@2/src/js.cookie.min.js"></script>
<script>
$(document).ready(function(){
var csrftoken = Cookies.get('csrftoken');

$(".auto-submit").change(function() {
$.post({
url: "{% url 'get-checkin-type' %}",
data: $(".auto-submit option:selected").val(),
headers: {
X-CSRFToken: csrftoken
}
})
});
});
</script>


<form action="" method="post">{% csrf_token %}
{% for field in form %}
<div class="{% if field.name == 'checkin_type' %}auto-submit{% endif %}">
{{ field.errors }}
{{ field.label_tag }}
{{ field }}
</div>
{% endfor %}
<input type="submit" value="Send message" />
</form>

但是,当我选择一个下拉选项时,我得到一个

new:17 Uncaught SyntaxError: Unexpected token -

源自 X-CSRFToken: csrftoken 行:

enter image description here

有人可以指出这段代码有什么问题吗? (我尝试从 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Unexpected_token 中查找它,但到目前为止无法弄清楚)。

对了,好像是从jQuery add CSRF token to all $.post() requests' data那个也可以将 CSRF token 添加到 POST 请求的 data,但这对我来说似乎不是最优雅的方法,并且文档指出

For this reason, there is an alternative method: on each XMLHttpRequest, set a custom X-CSRFToken header to the value of the CSRF token.

最佳答案

您缺少单引号,尝试如下。

$(".auto-submit").change(function() {
$.post({
url: "{% url 'get-checkin-type' %}",
data: $(".auto-submit option:selected").val(),
headers: {
'X-CSRFToken': csrftoken
}
})
});

关于javascript - 如何将 Django 的 CSRF token 添加到 jQuery POST 请求的 header 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49043629/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com