TOA
@TOA
Негр c агрессивным характером.

Как обрабатывать Undefinded в JSON (Ajax jquery)?

Здравствуйте! Эта проблема не дает мне покоя уже какую бессонную ночь сбился со счета:
Есть JSON код для обработки ответа, все по классике:
function result(data){
      if(data != null){
          api_loan_amount = data.noticeInfo.document; // Сумма займа
          api_expirationDate = data.applSubmissionCloseTime; // Дата окончания приема заявок
      } else {
      }
     }


Я это все обрабатываю - получаю ответ и т.д. Но вот в чем загвоздка - сегодня data.noticeInfo.document есть - завтра нет, по потом data.applSubmissionCloseTime. Как Вы поняли - ответ может не иметь в себе элеметнов массива. И выдает мне в итоге ошибку Undefinded и прерывает мне обработку получения других полей.
Я нарыл кучу информации про использование по типу:
if(typeof data.noticeInfo.document === undefinded){
 // Вот тут обрабатываем ошибку в теории
}


Все бы ничего, но вот в этом случае если data.noticeInfo.document нет - то ошибку Undefinded выдает в строке где сам логический оператор в if, потому, что я выполняю проверку над тем, что является Undefinded и мне выдает ошибку в итоге...

Вопрос: Как мне игнорировать этот проклятый Undefinded ? А лучше уметь его обрабатывать.
  • Вопрос задан
  • 38 просмотров
Пригласить эксперта
Ответы на вопрос 1
@alexalexes
Если у вас железобетонно всегда присутствует объект data.noticeInfo, но временами отсутствует свойство document, то можно проверять наличие так:
if('document' in data.noticeInfo)
{
}

или так, если нужно различать свойства обусловленные прототипом и доприсвоенные свойства:
if(data.noticeInfo.hasOwnProperty('document'))
{
}

Если свойство лежит глубоко, а проверять существование цепочки свойств/объектов до него лень, не схлопотав предупреждения отладчика, или запись получается слишком громоздка, то нужен аналог функции isset из PHP для JS.
if(typeof data.noticeInfo.document != "undefined" && data.noticeInfo.document !== null)
{
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы