Если fetch возвращает объект с несколькими атрибутами (т.е. object.exists и object.message), как я могу использовать их после завершения выборки?

После получения объекта он прекрасно его регистрирует, и я могу видеть все атрибуты объекта. Я даже могу изменить html на странице, используя все атрибуты.

login_button=document.getElementById('submit-login');
login_form=document.getElementById('login-form');
message=document.getElementById('message');


login_button.addEventListener('click',async (e)=> {
  e.preventDefault();
  form=new FormData(login_form);

  let response = await fetch('/',{
        method:'POST',
        body: form,
        headers:{
          'X-CSRFToken':document.cookie,
          // 'X-Requested-With': 'XMLHttpRequest',
        },
  });


  let processed_response=await response.json();
  console.log(processed_response);
  if (processed_response.exists){
    console.log('success');
    message.classList.remove('failure');
    message.classList.add('success');

  }
  else{
    message.classList.remove('success');
    message.classList.add('failure');
  }
  message.firstElementChild.innerHTML=processed_response.message;
  setTimeout((processed_response) => {
    window.location=processed_response.next;

  },1000);


});

Однако, когда я пытаюсь использовать функцию setTimeout, она выдает следующее:

Uncaught TypeError: can't access property "next", processed_response не определен

В ответе записано следующее:

Response { type: "basic", url: "http://127.0.0.1:8000/", redirected: false, status: 200, ok: true, statusText: "OK", заголовки: Заголовки, body: ReadableStream, bodyUsed: false }

и журналы обработанного_ответа:

Object { exists: false, next: "", сообщение: "login unsuccessful" }

.

И у меня не получается использовать атрибут из объекта в функции setTimeout. Может быть, я что-то упускаю. Это мой первый опыт работы с async и fetch/promises, так что извините за некачественный код.

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

во-первых, возвращает ли ответ что-то, если нет, то проблема может быть связана с сервером.

просьба предоставить больше информации.

Вернуться на верх