Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 19.04.2021, 16:40
Аватар для Black_Star
Профессор
Отправить личное сообщение для Black_Star Посмотреть профиль Найти все сообщения от Black_Star
 
Регистрация: 11.07.2016
Сообщений: 300

Как получить значение из Raw response data?

Подскажите, как из fetch ответа получить в JS переменную значение содержащую значение свойства msg если оно не пустое ?
function sendData(url, data) {
  const response = await fetch(url, {
    method: "POST",
    headers: {
      'Content-type': 'application/json;charset=utf-8',
      'X-Requested-With': 'XMLHttpRequest'
    },
    body: JSON.stringify(data),
    credentials: 'include',
  });

  if (!response.ok) {
    throw new Error(`Ошибка по адрессу ${url}, статус ошибки ${response}`);
  }

  const formData = new FormData(formCreateAccount);

  //// Get all selected options for multiple selects
  function getAllSelectedOptions(selectID, selectName) {
    let selectedMultiOptionValues = Array.from(selectID.options)
      .filter(option => option.selected)
      .map(option => [option.value]);

    return formData.append(selectName, selectedMultiOptionValues);

  }

  getAllSelectedOptions(products, 'products[]');
  getAllSelectedOptions(promotionalMethod, 'promoMethods[]');
  getAllSelectedOptions(promotingCountries, 'promoCountries[]');
  getAllSelectedOptions(paymentMethod, 'paymentMethods[]');

  const data = {};
  for (let [key, value] of formData.entries()) {
    data[key] = value
  }

  const newData = data;


  sendData('/server-site', newData)
    .then(() => {
      btnSubmit.setAttribute("disabled", "disabled");
      /// If OK

      showPopupReaction(
        'success',
      );
      this.reset();
    })
    .catch((err) => {
      btnSubmit.setAttribute("disabled", "disabled");
      console.log(err);
      showPopupReaction("problem",
        "Oh, we have some problem =(",
        'Please, try a little later');
    })


То есть, сейчас у меня если запрос возвращается с 400 ошибкой, то просто отображается попап об ошибке - showPopupReaction("problem",... а мне хотелось бы добавить конкретное оповещение - Что если 400 ошибка вызвана тем что уже есть зарегистрированный пользователь, то показать этот текст в попапе ошибки / Только вот я не знаю как сделать эту проверку ?
Ответить с цитированием
  #2 (permalink)  
Старый 19.04.2021, 17:35
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Black_Star,
err.msg.errors[0]
Ответить с цитированием
  #3 (permalink)  
Старый 19.04.2021, 17:43
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Black_Star,
.catch((err) => {
            btnSubmit.setAttribute("disabled", "disabled");
            console.log(err);
            let txt = err.msg.errors[0].includes("tra-ta-ta") ? "boom" : "problem";
            showPopupReaction("problem", txt)

        }
Ответить с цитированием
  #4 (permalink)  
Старый 19.04.2021, 22:00
Аватар для Black_Star
Профессор
Отправить личное сообщение для Black_Star Посмотреть профиль Найти все сообщения от Black_Star
 
Регистрация: 11.07.2016
Сообщений: 300

Рони, а как быть если в console.log(err) мне приходит `Ошибка по адрессу /server-site, статус ошибки [object Response]`

а запрос err.msg.errors[0] пишет что не может прочитать значение 'errors'
Ответить с цитированием
  #5 (permalink)  
Старый 19.04.2021, 22:27
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Black_Star,
Сообщение от Black_Star
а запрос err.msg.errors[0] пишет что не может прочитать значение 'errors'
let txt = err.msg?.errors?.[0].includes("tra-ta-ta") ? "boom" : "problem";
Ответить с цитированием
  #6 (permalink)  
Старый 20.04.2021, 08:58
Аватар для Black_Star
Профессор
Отправить личное сообщение для Black_Star Посмотреть профиль Найти все сообщения от Black_Star
 
Регистрация: 11.07.2016
Сообщений: 300

Рони, при написании такого запроса
let txt = err.msg?.errors?.[0].includes("tra-ta-ta") ? "boom" : "problem";

console.log("txt =" + txt); /// problem
Ответить с цитированием
  #7 (permalink)  
Старый 20.04.2021, 10:20
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Black_Star,
и? а что нужно то?
Ответить с цитированием
  #8 (permalink)  
Старый 20.04.2021, 10:23
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Black_Star,
const err = (err) => {

            console.log(err);
            let txt = err.msg?.errors?.[0].includes("tra-ta-ta") ? "boom" : "problem";
            alert(txt)

        };
err({msg: {errors: ["tra-ta-ta"]}})
err({msg: {e:2}})
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как получить значение цвета из color picker razorg1991 jQuery 1 06.10.2014 09:06
Как получить значение от вызываемой функции? Dimaz Общие вопросы Javascript 6 08.12.2012 20:42
Как получить значение php переменной sanyalex AJAX и COMET 1 30.10.2011 22:45
Как получить значение title с помощью js? faforty Общие вопросы Javascript 4 25.08.2011 18:47
Как получить значение следующего элемента? _mouse_ Общие вопросы Javascript 4 25.02.2010 11:37