Почему не выполненяется условие?
Есть функция выполняющая AJAX запрос и принимающая объект типа JSON. Необходимо выполнить простую проверку условия (истина/ложь) и показать диалоговое окно alert(1); Как бы я не писал условие: с двумя равно, с восклицательным знаком или с тремя равно, условие не выполняется.
$.ajax({ //... data: formData, dataType : 'json', success : function(data){ thisForm = { emailError : data.emailError, passwordError : data.passwordError, settings : data.settings } let settings = thisForm.settings, flag = USER.flag; alert (settings + ' + '+ flag); // тут смотрю, что всё правильно if (settings==true && flag==true){ alert(1); // dead code return; } if (settings==false) setErrorMessages(mod, thisForm); else{ alert(2); } }, error: function(){ console.log('Error occurred!'); } }); |
$.ajax({ //... data: formData, dataType : 'json', success : function(data){ thisForm = { emailError : data.emailError, passwordError : data.passwordError, settings : data.settings } let settings = thisForm.settings, flag = USER.flag; alert (settings + ' + '+ flag); // тут смотрю, что всё правильно if (settings==true && flag==true){ alert(1); // dead code return; } if (settings==false) setErrorMessages(mod, thisForm); else{ alert(2); } }, error: function(){ console.log('Error occurred!'); } });
Почему не выполненяется условие if (settings==true && flag==true)?
По отдельности, если например написать if(settings) или if(flag) оно работает. А вместе - никак.
Дополнительно:
возможно дело в том что settings не true, a строка. Поэтому и if(settings) сработает - этот код просто проверяет наличие чего-либо в переменной settings, то есть что сеттингс не нуль либо андефайнд. Убери проверку на true. что-то вроде if(settings && flag)
Убери проверку на true. что-то вроде if(settings && flag)
Так и сделал. Теперь только этот участок кода и выполняется... Даже если settings или flag == false
console.log(typeof settings); console.log(typeof flag); |
console.log(typeof settings); console.log(typeof flag);
Почти уверен что там будет строка в одном или обоих случаях. Поэтому проверка и не работает.
- settings - boolean
flag - String
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для того чтобы понять, почему не выполняется условие в вашем коде, необходимо проанализировать его внимательно. Возможно, проблема может быть связана с несоответствием типов данных, ошибкой в синтаксисе, логической ошибкой или другими причинами.
Для начала, убедитесь, что условие написано правильно и соответствует вашим ожиданиям. Проверьте, что все переменные корректно инициализированы и содержат нужные значения.
Если вы используете операторы сравнения, убедитесь, что они применяются к правильным значениям и типам данных. Например, при сравнении строк в PHP необходимо использовать тройное равенство (===) для строгого сравнения значений и их типов данных.
Также стоит проверить, нет ли в коде ошибок в логике выполнения условия. Возможно, вы пропустили какие-то важные условия или случаи, которые могут влиять на результат.
Если после анализа кода вы так и не смогли найти ошибку, попробуйте использовать отладочные инструменты, такие как var_dump() или die(), чтобы вывести значения переменных и убедиться, что они соответствуют вашим ожиданиям.
Если проблема все еще остается нерешенной, попробуйте разбить код на более мелкие части и пошагово проверять каждый участок, чтобы найти место, где происходит ошибка.
Надеюсь, эти советы помогут вам найти и исправить ошибку в условии вашего кода. Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать их.