Форум программистов
 
Расширенный поиск
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > Javascript, Ajax и другие клиентские скрипты
Регистрация

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



Ответ
 
Опции темы
Старый 08.01.2017, 17:17   #1
Женя32
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 165
Репутация: 15
Счастье 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, 17:30   #2
Alex11223
Модератор
Заслуженный модератор
 
Регистрация: 12.01.2011
Сообщений: 11,557
Репутация: 2366

icq: 512-7шесть5
skype: alexp.frl
По умолчанию

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

Поставьте точку остановки в отладчике или выводите data в консоль,чтобы узнать что там.
Alex11223 на форуме   Ответить с цитированием
Старый 08.01.2017, 18:46   #3
Женя32
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 165
Репутация: 15
Счастье

Цитата:
Сообщение от 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 Кб, 1 просмотров)
Женя32 вне форума   Ответить с цитированием
Старый 08.01.2017, 20:53   #4
Alex11223
Модератор
Заслуженный модератор
 
Регистрация: 12.01.2011
Сообщений: 11,557
Репутация: 2366

icq: 512-7шесть5
skype: alexp.frl
По умолчанию

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

Код:

console.log(JSON.stringify(data));

Alex11223 на форуме   Ответить с цитированием
Старый 08.01.2017, 22:25   #5
Женя32
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 165
Репутация: 15
По умолчанию

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

Код:

console.log(JSON.stringify(data));

Все из-за двойных кавычек в ответе обработчика, было так: "true", а надо 'true'.
Женя32 вне форума   Ответить с цитированием
Старый 08.01.2017, 22:44   #6
Naive
Раздолбайских Дел
Профессионал
 
Аватар для Naive
 
Регистрация: 22.05.2009
Адрес: Екатеринбург
Сообщений: 3,424
Репутация: 1747
По умолчанию

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

Код:

true == 'true'
>>false

__________________
ridero.ru — издай свою книгу по-человечески
Жду ваши искренние спасибы на яндекс-кошелек: 410011068154587
Naive вне форума   Ответить с цитированием
Старый 08.01.2017, 23:13   #7
Alex11223
Модератор
Заслуженный модератор
 
Регистрация: 12.01.2011
Сообщений: 11,557
Репутация: 2366

icq: 512-7шесть5
skype: alexp.frl
По умолчанию

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

Обработчике чего? '' и "" в JS эквивалентны.
Alex11223 на форуме   Ответить с цитированием
Старый 08.01.2017, 23:48   #8
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 21,030
Репутация: 4779
По умолчанию

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

Цитата:
Сообщение от Женя32 Посмотреть сообщение
Я в консоль вывожу data, там true.
так и напишите:
Код:

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

Serge_Bliznykov вне форума   Ответить с цитированием
Старый 09.01.2017, 00:01   #10
Alex11223
Модератор
Заслуженный модератор
 
Регистрация: 12.01.2011
Сообщений: 11,557
Репутация: 2366

icq: 512-7шесть5
skype: alexp.frl
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
он говорит о том, что true без кавычек и true в кавычках - это РАЗНЫЕ вещи,
Да, но у автора вроде бы и была строка ('true') в data, судя по выводу в консоли. Да и вроде ж jQuery не конвертирует так ответ сервера из строки в не строку. Только в объект из JSON если указать это.
Alex11223 на форуме   Ответить с цитированием
Ответ



Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

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




03:36.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

Покупайте на сайте www.skinon.ru уникальные чехлы и наклейки для телефонов.
таргетированный трафик


как улучшить посещаемость, а также решения по монетизации сайтов, видео и приложений

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru