Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите исправить if() функцию 
V
    Опции темы
Serious2008
Дата 12.2.2012, 21:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 294
Регистрация: 28.1.2011

Репутация: нет
Всего: нет



не могу понять почему вот так
Код

$.post("ajax.html", { id: rid, set: "chk"},
   function(data) {
if (data != ""){
   
    alert('Выберите категорию не имеющую детей');
    return false;
}
   });


не работает.
а вот так
Код

$.post("ajax.html", { id: rid, set: "chk"},
   function(data) {
if (data != ""){
   
    alert('Выберите категорию не имеющую детей');

}
   });
    return false;

работает.

Дело в том что мне нужно, чтобы если data вернула то он прервал выполнение скрипта, а в противном случае выполнять то что ниже по скрипту.
То что вдруг случайно data возвращает пустоту и поэтому не срабатывает, вероятность крайне мала. Это только если вдруг какой-нибудь злобный хакер перед тем как я нажимаю правит тот конец аякс скрипта и меняет с echo " "; на echo "";
PM MAIL   Вверх
$дмитрий
Дата 12.2.2012, 22:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 19.6.2004

Репутация: 5
Всего: 45



Цитата

не могу понять почему

В первом примере прерывается функция $.post, во втором ее обертка

Цитата

Дело в том что мне нужно, чтобы если data вернула то он прервал выполнение скрипта, а в противном случае выполнять то что ниже по скрипту.

Передавай метку, либо то что ниже засунь в функцию и при необходимости вызывай
PM MAIL   Вверх
Serious2008
Дата 12.2.2012, 22:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 294
Регистрация: 28.1.2011

Репутация: нет
Всего: нет



Код

 var err_msgs = '';
$.post("ajax.html", { id: rid, set: "chk"},
   function(data) {
      if (data != "")
       {
           alert(data);
       err_msgs = "Выберите категорию не имеющую детей";
       }
   });
alert(err_msgs);
if (err_msgs != "")
    {
    
    return false;
    }

Преобразовал вот в такое.
Второй алерт был внутри второго ифа изначально.
Так вот. Вначале он выбивает пустое окно, а потом alert(data); А как мне бы хотелось. Чтобы он вначале $.post выполнял, а потом уже всё что ниже.
PM MAIL   Вверх
$дмитрий
Дата 13.2.2012, 00:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 19.6.2004

Репутация: 5
Всего: 45



Цитата

Вначале он выбивает пустое окно

Правильно, за счет асинхронной работы Ajax-а, скрипт не ждет, а выполняется дальше
Если хочешь выполнить синхронный запрос, воспользуйся методом $.ajax, с флагом async:false
Либо, все что ниже засунь в первый иф
Либо, все что ниже засунь в функцию, которую будешь вызывать в срабатывании первого ифа

Добавлено через 5 минут и 7 секунд
Что-то типа этого
Код

var err_msgs;
$.ajax({
    url:"ajax.html",
    data:{id: rid, set: "chk"},
    async:false, 
    success:function(data){
     if(data != ""){
         alert(data);
         err_msgs = "Выберите категорию не имеющую детей";
     }
    }
});
if(err_msgs){
    alert(error);
}

PM MAIL   Вверх
Serious2008
Дата 13.2.2012, 01:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 294
Регистрация: 28.1.2011

Репутация: нет
Всего: нет



Код

var err_msgs = "";
$.ajax({
    url:"ajax.html",
    data:{id: rid, set: "chk"},
    async:false, 
    success:function(data){
     if(data != ""){
         err_msgs = "Выберите категорию не имеющую детей";
     alert(err_msgs);
     }
    }
});
if (err_msgs != "")
    {
         return false;
    }

вот такое получилось в конце-концов, если вдруг кому-нибудь понадобиться.

В моём случае это вешается на проверку валидатности введёных некоторых данных на форме. По нажатию кнопки submit

Это сообщение отредактировал(а) Serious2008 - 13.2.2012, 01:48
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1697 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.