AJAX GET-запрос не отправляет данные на Django - PullRequest
0 голосов
/ 24 апреля 2020

Я пытаюсь отправить данные в localStorage через AJAX GET-запрос на Django, но сервер Django никогда не получает их. Я уверен, что у меня есть данные в localStorage("preselection"), как показывает console.log. Вот мой JavaScript фрагмент, который находится внутри индекса. html (я новичок, поэтому извиняюсь, если это основа c и я пока избегаю jQuery):

var preselection = localStorage.getItem("preselection");

function previous_selection () {
  if (localStorage.getItem("preselection") != null) {
    console.log("PRESELECTION IS: ", preselection);
    const data = new FormData();
    data.append("preselection", preselection);
    const request = new XMLHttpRequest();
    request.open('GET', '/');
    request.setRequestHeader("X-CSRFToken", getCookie('csrftoken'));
    request.send(data);

    request.onload = () => {
      var url = '/prebasket';
      window.location.href = url;

    };
    return false;
  }
}

previous_selection();

Ниже мое мнение в views.py. Я пробовал request.GET.dict(), request.GET.get(), request.GET.copy() и др. c. и мои данные имеют значение JSON, если это имеет значение, но Django просто получает пустое значение {} или Null для q_preselection:

@login_required
def index(request):
  q_preselection = request.GET.dict()
  print(q_preselection) # comes back empty
  context = { 
     #irrelevant 
             }
  return render(request, "pizza/index.html", context)

1 Ответ

2 голосов
/ 24 апреля 2020

XMLHttpRequest send() не передает данные тела для GET

send() принимает необязательный параметр, который позволяет указать тело запроса; это в основном используется для запросов, таких как PUT. Если метод запроса GET или HEAD, параметр body игнорируется , а тело запроса имеет значение null.

Вместо этого используйте POST, вы почти никогда не хотите получать запрос GET с BODY (параметры должны передаваться через URL для GET)

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