Uncaught ReferenceError: функция не определена - при вызове функции извне jQuery ajaxSetup - PullRequest
0 голосов
/ 22 апреля 2020

Я включил приведенный ниже код (находится здесь 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>

Заранее спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...