Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   странное поведение условия if-else (https://javascript.ru/forum/jquery/17541-strannoe-povedenie-usloviya-if-else.html)

codename 23.05.2011 18:42

странное поведение условия if-else
 
Други, поможите. То ли я тупой, то ли одно из двух.
Есть js скрипт, который отсылает данные серверу (аяксом через post) и получает от него ответ (если конкретно, то в ответе или месседж успешного выполнения, или меседж ошибки) в виде json объекта. объект удачно распарсиваю и дальше такая строчка

if (data.Success.new_album!==undefined)
$("#messages").html(data.Success.new_album);
if (data.Errors.new_album!==undefined)
$("#messages").html(data.Errors.new_album)

Т.е. если есть переменная data.Success.new_album то выводим текст этой переменной, или же выводим текст переменной data.Errors.new_album. А вот фигушки, второе условие не срабатывает никогда, даже если я его нарочно провоцирую. В данном случае никогда не выдаст ошибку. Условия меняю местами и теперь никогда не выдаст "успех".
Уже пробовал переписать через if-else с дотошной расстановкой всех скобочек и прочего по синтаксису.

Что еще выявил, если переписать вот так:

if (data.Success.new_album!='фактическое_ одержание_переменной') {alert('notok')} else {alert('ok')}

то уже никогда не выведет "notok", даже если явно провоцирую. Почему? Переменная пустая - молчит, переменная содержит верный текст - выводит "ok".

Пробовал разные комбинации ==, ===, !==, != и везде что-то не срабатывает.

Я реально не понимаю :blink:

nikita.mmf 23.05.2011 19:29

не знаю точной структуры вашего json'a могу только предположить, что нужно писать

var message = "";
if ( "Success" in data && "new_album" in data.Success ) {
    message = data.Success.new_album;
} else if ( "Errors" in data && "new_album" in data.Errors ) {
     message = data.Errors.new_album;
}
$("#messages").html( message );

codename 23.05.2011 19:35

спасибо, добрый волшебник :victory: , работает. а в чем специфика собсно? почему именно так? если не затруднит вас ответить


Часовой пояс GMT +3, время: 17:21.