Почему не выполненяется условие?

Ссылка скопирована
1 ответ

Есть функция выполняющая 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)

  • Kentavr16,

    Убери проверку на true. что-то вроде if(settings && flag)

    Так и сделал. Теперь только этот участок кода и выполняется... Даже если settings или flag == false

  • My1Name, я же не знаю что ты хочешь от кода, что приходит и что за юзер. Просто указал на ошибку
  • Kentavr16, я хочу чтоб оно логически работало.
  • Что конкретно у тебя в этих переменных?
  • Если в сеттингс именно слово "true" или "false", то проверяй на соответствие слову а не булю - if(settings==="true" и т.д.
  • console.log(typeof settings); console.log(typeof flag);

    console.log(typeof settings); console.log(typeof flag);

    Почти уверен что там будет строка в одном или обоих случаях. Поэтому проверка и не работает.

    • settings - boolean
      flag - String
    Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Антон С. Ответ

    Для того чтобы понять, почему не выполняется условие в вашем коде, необходимо проанализировать его внимательно. Возможно, проблема может быть связана с несоответствием типов данных, ошибкой в синтаксисе, логической ошибкой или другими причинами.

    Для начала, убедитесь, что условие написано правильно и соответствует вашим ожиданиям. Проверьте, что все переменные корректно инициализированы и содержат нужные значения.

    Если вы используете операторы сравнения, убедитесь, что они применяются к правильным значениям и типам данных. Например, при сравнении строк в PHP необходимо использовать тройное равенство (===) для строгого сравнения значений и их типов данных.

    Также стоит проверить, нет ли в коде ошибок в логике выполнения условия. Возможно, вы пропустили какие-то важные условия или случаи, которые могут влиять на результат.

    Если после анализа кода вы так и не смогли найти ошибку, попробуйте использовать отладочные инструменты, такие как var_dump() или die(), чтобы вывести значения переменных и убедиться, что они соответствуют вашим ожиданиям.

    Если проблема все еще остается нерешенной, попробуйте разбить код на более мелкие части и пошагово проверять каждый участок, чтобы найти место, где происходит ошибка.

    Надеюсь, эти советы помогут вам найти и исправить ошибку в условии вашего кода. Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать их.

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно