Вход

Просмотр полной версии : странное поведение условия if-else


codename
23.05.2011, 18:42
Други, поможите. То ли я тупой, то ли одно из двух.
Есть 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: , работает. а в чем специфика собсно? почему именно так? если не затруднит вас ответить