Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.07.2011, 16:58
Новичок на форуме
Отправить личное сообщение для Tuzzulino Посмотреть профиль Найти все сообщения от Tuzzulino
 
Регистрация: 03.06.2009
Сообщений: 7

Проблема с глобальной переменной
Есть кнопка, к которой прикручен click(), которым руководит глобальная переменная retVal. Присваиваю ей изначально false, в теле функции в случае успеха изменяю на true. Однако все равно retVal остается false. Помогите, пжл, разобраться

var retVal = false;
			  $('#submit_reg').click(function(){
                    $('.error').empty();
                    $.post('model/checkForm.php', form.serialize(), function(data){
                      if( data.login == 1 ) {$('#errorLogin').append('такой логин уже занят'); errorLogin = 1;}
				              else if( data.login == 2 ) {$('#errorLogin').append('некорректный логин');	errorLogin = 2;	}	
			                if( data.fname == 1 ) $('#errorFname').append('укажите имя');
			                if( data.pass == 1 ) {$('#errorPass').append('некорректный пароль');errorPass=1;}
			                if( data.cp == 1 ) {$('#errorCP').append('пароли не совпадают');errorCP = 1;}
                      if(data.success1) {alert('Cond'); retVal = true;}
                      //alert(retVal);
                      }, 'json');	
                      //alert(retVal);		                
                      return retVal;
                    });
Ответить с цитированием
  #2 (permalink)  
Старый 20.07.2011, 17:14
Профессор
Отправить личное сообщение для ваый Посмотреть профиль Найти все сообщения от ваый
 
Регистрация: 29.06.2011
Сообщений: 445

$.post - асинхронный, правильно? это значит, что как выполнение программы сразу же перейдет к следующей строке, не дожидаясь, пока отработает callback ajax запроса. то есть сразу же после того как пойдет запрос на сервер, программа выполнит строку return retVal;
в этот момент retVal действительно еще false, потому что не успела измениться.
то есть все то, что вы хотите сделать в случае, когда retVal == true, нужно поместить внутрь функции обратного вызова ajax запроса.
Ответить с цитированием
  #3 (permalink)  
Старый 20.07.2011, 17:20
Профессор
Отправить личное сообщение для ваый Посмотреть профиль Найти все сообщения от ваый
 
Регистрация: 29.06.2011
Сообщений: 445

и вообще, надо отучаться обрабатывать отправку формы через событие щелчка по кнопке (а если я захочу форму отправить, нажав на Enter? низя?). click, это хорошо, но мы сабмитим форму, и для этого у нее есть специальное событие onsubmit.
$('#frmRegister').submit(function() {
    // тут все наши проверки корректности введенных данных...
})
Ответить с цитированием
  #4 (permalink)  
Старый 20.07.2011, 17:31
Новичок на форуме
Отправить личное сообщение для Tuzzulino Посмотреть профиль Найти все сообщения от Tuzzulino
 
Регистрация: 03.06.2009
Сообщений: 7

Спасибо.
в submit() надо использовать preventDefault() , а как это сделать если я собираюсь использовать в нем .post()? Я пробовал, если все плохо, тогда
event.preventDefault(), но чето не покатило
Ответить с цитированием
  #5 (permalink)  
Старый 20.07.2011, 18:08
Новичок на форуме
Отправить личное сообщение для Tuzzulino Посмотреть профиль Найти все сообщения от Tuzzulino
 
Регистрация: 03.06.2009
Сообщений: 7

Спасибо огроменное
Ответить с цитированием
  #6 (permalink)  
Старый 20.07.2011, 18:18
Профессор
Отправить личное сообщение для ваый Посмотреть профиль Найти все сообщения от ваый
 
Регистрация: 29.06.2011
Сообщений: 445

как-то так можно
$('#frmRegister').submit(function(e) {

    var $frm = $(this);
    e.preventDefault();
    
    // тут все наши проверки корректности введенных данных
    $.post('/register', $(this).serialize(), function(data) {
        if (data.error) {
            // что-то не так, останавливаемся, показываем ошибку
            return false;
        }

        // данные корректны, можно продолжать
        $frm.unbind().submit();
    });
})
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с переменной Luke Элементы интерфейса 5 20.05.2011 15:47
Проблема при передаче в jquery переменной c id элемента lectrouser jQuery 2 02.05.2011 16:51
Обращение к глобальной переменной из jQuery Иван Алексеев jQuery 6 13.08.2010 20:56
RegExp и search. Проблема с переменной в выражении Arconas Общие вопросы Javascript 2 21.05.2010 15:45
Проблема спама lliberty AJAX и COMET 1 12.03.2009 16:47