Я включил приведенный ниже код (находится здесь Django Проверка CSRF завершилась неудачно с Ajax POST-запросом ), чтобы получить мои AJAX запросы на отправку обратно токена CSRF в своем собственном заголовке X_CSRFTOKEN - до сих пор у меня все работало нормально:
$.ajaxSetup({
beforeSend: function(xhr, settings) {
function getCookie(name) {
var cookieValue = null;
if (document.cookie && document.cookie != '') {
var cookies = document.cookie.split(';');
for (var i = 0; i < cookies.length; i++) {
var cookie = jQuery.trim(cookies[i]);
if (cookie.substring(0, name.length + 1) == (name + '=')) {
cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
break;
}
}
}
return cookieValue;
}
if (!(/^http:.*/.test(settings.url) || /^https:.*/.test(settings.url))) {
xhr.setRequestHeader("X-CSRFToken", getCookie('csrftoken'));
}
}
});
Но теперь, при вызове функции getCookie()
ниже я получаю ошибку Uncaught ReferenceError: getCookie is not defined at previous_selection
:
var preselection = localStorage.getItem("preselection");
function previous_selection () {
if (localStorage.getItem("preselection") != null) {
const data = new FormData();
data.append("preselection", preselection);
const request = new XMLHttpRequest();
request.open('POST', '/prebasket');
request.setRequestHeader("X-CSRFToken", getCookie('csrftoken'));
request.send(data);
return false;
}
}
previous_selection();
Это так? проблема объема? Если да, то почему тот же самый код ajaxSetup
работал в предыдущем вызове getCook ie (), который у меня был из другого скрипта?
Для завершения: я пытаюсь использовать / access localStorage чтобы увидеть, положил ли мой пользователь ранее пункты меню ресторана в свою корзину, и если это так, перенаправьте его прямо на эти prebasket
.
Это мои script
-метки, помещенные в заголовок моего html - шаблон в следующем порядке:
{% load static %}
<script src="https://code.jquery.com/jquery-latest.min.js"></script>
<script src="{% static 'pizza/order.js' %}"></script>
Заранее спасибо!