Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.01.2017, 16:17   #1
Женя32
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 621
Счастье if else работает на оборот

Здравствуйте!
Подскажите пожалуйста, почему условия if else работает на оборот, когда data == true, выполняется то, что в else, а если data != true - выполняется то, что находится в if. Почему так?

PHP код:
            submitHandler: function(form) {
                    $(
form).ajaxSubmit({

                        
success: function (data) {

                            if (
data == 'true') {
                
                               $(
"#block-form-registration").fadeOut(300, function () {

                                    $(
"#reg_message").addClass("reg_message_good").fadeIn(400).html("Вы успешьно зарегистровались!");

                                    $(
"#form_submit").hide();
                                });
                            }else
                               {
                                  $(
"#reg_message").addClass("reg_message_error").fadeIn(400).html(data);
                               }
                        }

                    });

                } 
Женя32 вне форума Ответить с цитированием
Старый 08.01.2017, 16:30   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Дык оно не "наоборот работает", а просто условие в if не выполняется тогда когда вы хотели.

Поставьте точку остановки в отладчике или выводите data в консоль,чтобы узнать что там.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 08.01.2017, 17:46   #3
Женя32
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 621
Счастье

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Дык оно не "наоборот работает", а просто условие в if не выполняется тогда когда вы хотели.

Поставьте точку остановки в отладчике или выводите data в консоль,чтобы узнать что там.
Я в консоль вывожу data, там true.

PHP код:
              submitHandler: function(form) {
                    $(
form).ajaxSubmit({

                        
success: function (data) {
console.log(data)
                            if (
data == 'true') {
                
                               $(
"#block-form-registration").fadeOut(300, function () {

                                    
//$("#reg_message").addClass("reg_message_good").fadeIn(400).html("Вы успешьно зарегистровались!");
                                    
document.getElementById('sms').style.display 'block'
                                    $(
"#form_submit").hide();
                                });
                            }else
                               {
                                  $(
"#reg_message").addClass("reg_message_error").fadeIn(400).html(data);
                               }
                        }

                    });

                } 
Изображения
Тип файла: jpg zzzzzzz.jpg (84.5 Кб, 116 просмотров)
Женя32 вне форума Ответить с цитированием
Старый 08.01.2017, 19:53   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Может быть там есть какие-то еще символы, например перенос строки

Код:
console.log(JSON.stringify(data));
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 08.01.2017, 21:25   #5
Женя32
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 621
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Может быть там есть какие-то еще символы, например перенос строки

Код:
console.log(JSON.stringify(data));
Все из-за двойных кавычек в ответе обработчика, было так: "true", а надо 'true'.
Женя32 вне форума Ответить с цитированием
Старый 08.01.2017, 21:44   #6
Naive
Раздолбайских Дел
Старожил
 
Аватар для Naive
 
Регистрация: 22.05.2009
Сообщений: 3,828
По умолчанию

вас наверно удивит, но...

Код:
true == 'true'
>>false
Alar, верни репу!
Naive вне форума Ответить с цитированием
Старый 08.01.2017, 22:13   #7
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Ну у автора вроде и было 'true' в data, иначе бы в консоли оно вывелось другим цветом.

Обработчике чего? '' и "" в JS эквивалентны.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 08.01.2017, 22:48   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Ну у автора вроде и было 'true' в data, иначе бы в консоли оно вывелось другим цветом.
Alex11223, или я Вас не понял, или Вы не поняли, о чём говорит Naive!
он говорит о том, что true без кавычек и true в кавычках - это РАЗНЫЕ вещи,
и даже они не равны друг другу.
поэтому,
true == 'true' (так же, как и true == "TRUE") - это ЛОЖЬ.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 08.01.2017, 22:49   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Женя32 Посмотреть сообщение
Я в консоль вывожу data, там true.
так и напишите:
Код:
                        success: function (data) { 
                        console.log(data); 
                        if (data) { 
                               $("#block-form-registration").fadeOut(300, function () { 
........................
Serge_Bliznykov вне форума Ответить с цитированием
Старый 08.01.2017, 23:01   #10
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
он говорит о том, что true без кавычек и true в кавычках - это РАЗНЫЕ вещи,
Да, но у автора вроде бы и была строка ('true') в data, судя по выводу в консоли. Да и вроде ж jQuery не конвертирует так ответ сервера из строки в не строку. Только в объект из JSON если указать это.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не работает анимация. Механизм работает лишь при изменения числа в едит1. Студент ММИ Помощь студентам 1 18.05.2015 07:39
Ввод - сделать так, чтобы в Edit можно было вводить только цифры, или на оборот, только буквы BastAngel Общие вопросы Delphi 7 27.04.2012 01:15
Оборот матрицы Pixma Помощь студентам 2 05.12.2010 13:54
прием передача сообщения от сервера клиенту и на оборот Lokos Работа с сетью в Delphi 4 24.08.2010 18:24
ФРС США снизила учетную ставку до 3.5% - большие деньги выходят в оборот Alar Свободное общение 7 24.01.2008 20:15