Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 23.05.2011, 18:42
Новичок на форуме
Отправить личное сообщение для codename Посмотреть профиль Найти все сообщения от codename
 
Регистрация: 23.05.2011
Сообщений: 2

странное поведение условия 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".

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

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

Последний раз редактировалось codename, 23.05.2011 в 18:44. Причина: исправления
Ответить с цитированием
  #2 (permalink)  
Старый 23.05.2011, 19:29
Профессор
Отправить личное сообщение для nikita.mmf Посмотреть профиль Найти все сообщения от nikita.mmf
 
Регистрация: 01.02.2010
Сообщений: 364

не знаю точной структуры вашего 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 );
Ответить с цитированием
  #3 (permalink)  
Старый 23.05.2011, 19:35
Новичок на форуме
Отправить личное сообщение для codename Посмотреть профиль Найти все сообщения от codename
 
Регистрация: 23.05.2011
Сообщений: 2

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Странное поведение Dojo. Kuzya59 Dojo toolkit 4 15.10.2011 15:42
Странное поведение FINoM Общие вопросы Javascript 0 22.04.2011 21:16
Странное поведение переменной mycoding Серверные языки и технологии 4 14.01.2011 19:18
Странное поведение jquery Ziki jQuery 3 02.12.2010 21:09
Странное поведение replace cooli0 Общие вопросы Javascript 4 25.01.2010 17:16