данные о неперехваченных ошибках не определены при вызове ajax - PullRequest
1 голос
/ 05 августа 2020

Я делаю вызов ajax (JavaScript), который с помощью функции show info генерирует данные, которые я получаю. Моя проблема заключается в следующем: на одном из массивов некоторые данные не имеют его, их немного, но все же есть. Таким образом, он отображает первые элементы, но останавливается, когда не может получить указанный массив и вернуть:

Uncaught TypeError: info ["xxxx"] не определено.

Что мне действительно нужно, так это сделать так, чтобы он по-прежнему извлекал / отображал данные и говорил что-то вроде «эти данные. [Деноминация] [0] .title is undefined или что-то еще».

Я пытался использовать дополнительный оператор цепочки '?.' но я совершенно не понимаю, как это работает.

Вот что меня сводит с ума: (это данные ["номинал"], которые все разрушают)

request.addEventListener('readystatechange', function(){
    if (request.readyState === XMLHttpRequest.DONE && request.status === 200) {
        const backCall=JSON.parse(request.responseText);
        if(backCall.count != 0){
        for(let data of backCall.datas){
            showInfo(data.title, data["author"][0].name, data["denomination"][0].title, data["denomination"][0].id);
        }
    }else if(backCall.count === 0){
        noResult();
    }
}
});

(просто немного отредактировать, чтобы быть точным. Я искал перед рукой и даже посмотрел на рекомендованные темы от Stack, когда я писал это)

1 Ответ

0 голосов
/ 05 августа 2020

Проверьте, существуют ли в объекте оба свойства, а затем вызовите функцию showinfo, она не должна завершиться ошибкой

for (let data of backCall.datas) {
  if (data["author"] && data["denomination"]) {
    showInfo(data.title, data["author"][0].name, data["denomination"][0].title, data["denomination"][0].id);
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...