После ajax
запроса function(data)
проверяю наличие нужного объекта.
..., function(data)
{
if (typeof(data.ads.photo) == "undefined")
{
console.log ('есть фото');
}
else
{
console.log ('нет фото');
}
}
В чём проблема. Такая проверка не заходит ни в if ни в else
Но если поставить проверку:
if (typeof(data.ads) == "undefined")
тогда показывать наличие или отсутствие. Что может быть не так?
Так как data.ads
неопределено, попытка обращения к data.ads.photo
вызывает исключение, прерывающее исполнение кода.
if (!data || !data.ads || !data.ads.photo)
{
console.log ('нет фото');
}
else
{
console.log ('есть фото');
}
Причина названа в ответе @Igor, я лишь предложу более изящное решение:
..., function(data) {
let photo, something;
try {
photo = data.ads.photo;
something = data.ads.something; // получение еще каких-либо данных из полей data
} catch (err) {
console.log ('опаньки... ' + err.message);
return;
}
... // делаем что-то с photo и прочими значениями из data. Если код здесь тоже небезопасен, то его можно перенести в тело try
}
var rslt = document.getElementById('result'),
btns = document.querySelectorAll('.test-btn');
for (let btn of btns)
btn.addEventListener('click', fetchData);
function fetchData(e) {
console.clear();
rslt.textContent = '\tПолучение данных... ';
fetch('https://httpbin.org/get').then(r => r.json()).then(data => {
let ip, ua, notExists;
try {
ip = data.origin;
ua = data.headers['User-Agent'];
if (e.target.id === 'test-two')
notExists = data.noObject.noValue; // тут будет ошибка, и выполнение перейдет в catch
rslt.textContent += `OK\n IP:${ip}\n UA:${ua}\n`;
} catch (err) {
rslt.textContent += 'ошибка!\n';
console.log(err.stack);
}
rslt.textContent += '\tЗавершено.'; // выполняется вне зависимости от ошибок в try
});
}
#result {
height: 100px; overflow-y: auto;
font: 14px monospace; white-space: pre-wrap;
background-color: #222; color: #4d4;
}
<button id="test-one" class="test-btn">Обычный тест</button>
<button id="test-two" class="test-btn">Тест с ошибкой</button>
<pre id="result"></pre>
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Через консоль PhpStorm выполняю установку: npm install --save-dev babel-cli, установился в корень настоящего проекта
В чем ошибка?пишет, что pushAlphabet не определен в HTMLInputElementonclic