Оператор ЕСЛИ всегда истинен

У меня есть radwindow, который я использую для отображения сообщений об ошибках пользователям в приложении.
Моя цель следующая:
Если сообщение не является предупреждением/ошибкой, я хочу, чтобы пользователь перенаправлялся, когда он нажимает "ОК" во всплывающем окне radwindow. Для этого я устанавливаю для HiddenField значение «1», когда операция выполнена успешно, и «0», когда операция завершается неудачно. Моя проблема в том, что когда я проверяю значение HiddenField на стороне клиента, оператор IF всегда возвращает true, и страница перенаправляется.

Вот случаи, когда я устанавливаю значение hiddenfield и устанавливаю сообщение radwindow;

if(x)
{
   hfPasswordWarning.Value = "0";
   ShowMessage(MessageResource.ChangePasswordAuthenticateError,false);
}

else
{
   hfPasswordWarning.Value = "1";
   ShowMessage(MessageResource.ChangePasswordSuccess,true);
}

И код на стороне клиента, с которым у меня возникают проблемы, оператор IF всегда верен;

var hv = $('#hfPasswordWarning').val();

    if (hv.val = "1") {
        window.location = "../Main/Login.aspx";
    } else {
        return false;
    }

Я добавил оповещение («xx»), чтобы проверить, попадает ли оно когда-либо в оператор else, но это не так. Я попытался максимально упростить объяснение моей проблемы. Спасибо за Ваше понимание.


person user1595357    schedule 10.10.2012    source источник


Ответы (3)


Вам нужно использовать == или === для сравнения вместо =.

  • x = y назначает y на x
  • x == y проверяет, приблизительно ли равны y и x
  • x === y проверяет, равны ли y и x и имеют ли они один и тот же тип

Итак, что вам нужно сделать, это заменить if (hv.val = "1") на if (hv.val == "1")

person ThiefMaster    schedule 10.10.2012

вы написали

if (hv.val = "1")

но это присваивание (оцениваемое как истинное в вашем коде): проверка на равенство == (равенство по значению) или === (равенство по значению и типу)

person Fabrizio Calderan    schedule 10.10.2012
comment
На самом деле присваивание не всегда истинно, но разделяет истинность присваиваемого значения. - person ThiefMaster; 10.10.2012
comment
Теперь он вообще не перенаправляется, во всяком случае. Извините за отсутствие == хотя, мой плохой. - person user1595357; 10.10.2012
comment
возможно, вам нужно просто написать if (hv == "1") - hv это результат, возвращаемый методом val() в предыдущей строке - person Fabrizio Calderan; 10.10.2012
comment
Спасибо, добрый сэр, за вашу искреннюю помощь. - person user1595357; 10.10.2012
comment
@ user1595357 вы должны принять ответ, если это помогло :) - person Fabrizio Calderan; 11.06.2014

вы использовали = оператор, который используется для присваивания для сравнения == оператор используется попробуйте это В вашем операторе if попробуйте это

if(hv.val=="1")
person Nikhil Mittal    schedule 10.10.2012