Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Есть проблемы с обработчиком submit!!!!

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
alnik-75
Отправлено: 23 Апреля, 2014 - 01:09:52
Post Id



Посетитель


Покинул форум
Сообщений всего: 338
Дата рег-ции: Сент. 2012  
Откуда: Гродно, Беларусь


Помог: 0 раз(а)




Здравствуйте уважаемые форумчане!!!
Помогите решить проблему.
есть форма. При нажатии submit вызывается обработчик submit() для предварительной проверки заполненных полей формы с помощью jquery. В ходе этой проверки делаю ajax-запрос. Не дожидаясь результатов этого запроса, данные формы отправляются в обработчик, указанный в action формы. Мне же необходимо, чтобы на время выполнения ajax-запроса этого не происходило, т.е. нужно чтобы приостанавливалось действие обработчика. Применял preventDefault. Тогда не знаю, как возобновить действие обработчика после получения результатов запроса.
Надеюсь ясно выразил свои мысли. Жду советов
 
 Top
DlTA
Отправлено: 23 Апреля, 2014 - 09:18:52
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




отделите отправку фотмы в отдельную функцию
и тогда получитсяпримерно так

CODE (javascript):
скопировать код в буфер обмена
  1. function onSubmit(){
  2.   $.get(куда, чево, function(data){
  3.     if(data = OK){
  4.       doSubmit();
  5.     }
  6.   });
  7.   return false;
  8. }
  9.  
  10. function doSubmit(){
  11.   // а тут идет сбор и отправка данных с формы
  12.   // с последующей перезагрузкой страницы если надо
  13. }


но это как пример костыля, а вообще зачем делается аякс запрос?
возможно есть смысл делать запрос еще при заполнении формы, чтоб клиент видел свои лаги раньше и вам не приходилось лепить костыли
 
 Top
alnik-75
Отправлено: 23 Апреля, 2014 - 09:27:18
Post Id



Посетитель


Покинул форум
Сообщений всего: 338
Дата рег-ции: Сент. 2012  
Откуда: Гродно, Беларусь


Помог: 0 раз(а)




я так и делаю. Наверное, немного не так объяснил. аякс-запросом запросом осуществляю авторизацию пользователя. Если ошибок не выявлено (авторизация прошла успешно), то вся форма отправляется в php-обработчик. Если же выявлены ошибки, то submit должен прекратиться.
В данном то случае запрос асинхронный и при его выполнении продолжает действовать submit, не дожидаясь результатов аякс -авторизации
Наверное, сделаю, чтобы аякс запрос был синхронным. Есть ли другие пути ?
 
 Top
tuareg
Отправлено: 23 Апреля, 2014 - 11:59:17
Post Id


Участник


Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010  


Помог: 69 раз(а)




CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. var flag = false;
  3. $('submit').on('submit',function(e){
  4.     if(flag){
  5.        flag = false;
  6.        return;
  7.     }
  8.     var el = $(this);
  9.     e.preventDefault();
  10.     $.get(куда, чево, function(data){
  11.       if(data = OK){
  12.          flag = true;
  13.          el.submit();
  14.       }
  15.   });
  16.  
  17. });
  18.  
 
 Top
DlTA
Отправлено: 23 Апреля, 2014 - 12:01:01
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




ввести некую глобальную переменную
по умолчанию false
субмит проверяет состояние этой переменной, если она true то делаем отправку, иначе ждем
 
 Top
alnik-75
Отправлено: 23 Апреля, 2014 - 12:39:26
Post Id



Посетитель


Покинул форум
Сообщений всего: 338
Дата рег-ции: Сент. 2012  
Откуда: Гродно, Беларусь


Помог: 0 раз(а)




я как и говорил выше запрос сделал синхронным и все стало работать хорошо
 
 Top
nerv
Отправлено: 24 Апреля, 2014 - 00:00:45
Post Id



Посетитель


Покинул форум
Сообщений всего: 407
Дата рег-ции: Февр. 2013  
Откуда: Россия


Помог: 9 раз(а)




DlTA пишет:
if(data = OK){

Однако

tuareg пишет:
if(data = OK){

Однако

alnik-75 пишет:
я как и говорил выше запрос сделал синхронным и все стало работать хорошо

Улыбка

Синхронно - хорошо, асинхронно - плохо)

alnik-75, читай про асинхронные приложения.


-----
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
 
 Top
tuareg
Отправлено: 24 Апреля, 2014 - 09:16:41
Post Id


Участник


Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010  


Помог: 69 раз(а)




CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. if(data = "ok")
  3.  

Ну да описка. И? Главное логика )))
 
 Top
nerv
Отправлено: 24 Апреля, 2014 - 11:40:51
Post Id



Посетитель


Покинул форум
Сообщений всего: 407
Дата рег-ции: Февр. 2013  
Откуда: Россия


Помог: 9 раз(а)




tuareg пишет:
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. if(data = "ok")
  3.  

Ну да описка. И? Главное логика )))

описка #2. И главное - логика Улыбка

(Отредактировано автором: 24 Апреля, 2014 - 11:41:10)



-----
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
 
 Top
Zuldek
Отправлено: 24 Апреля, 2014 - 11:45:03
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


Помог: 50 раз(а)





Цитата:
CODE (javascript):
скопировать код в буфер обмена
  1.     $.get(куда, чево, function(data){
  2.       if(data = OK){

эпично
 
 Top
tuareg
Отправлено: 24 Апреля, 2014 - 12:06:37
Post Id


Участник


Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010  


Помог: 69 раз(а)




nerv пишет:
описка #2. И главное - логик

Работать будет? Будет. Как надо? Как надо. В чем проблема?
 
 Top
nerv
Отправлено: 24 Апреля, 2014 - 12:49:00
Post Id



Посетитель


Покинул форум
Сообщений всего: 407
Дата рег-ции: Февр. 2013  
Откуда: Россия


Помог: 9 раз(а)




tuareg пишет:
В чем проблема?

В том, что это присваивание значения переменной. Иными словами всегда true.

http://learn.javascript.ru/play/wMG4yb

(Отредактировано автором: 24 Апреля, 2014 - 12:51:22)



-----
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
 
 Top
tuareg
Отправлено: 24 Апреля, 2014 - 12:54:01
Post Id


Участник


Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010  


Помог: 69 раз(а)




Правда? А вот здесь получается нет. http://jsfiddle[dot]net/AAXqB/
 
 Top
nerv
Отправлено: 24 Апреля, 2014 - 13:15:29
Post Id



Посетитель


Покинул форум
Сообщений всего: 407
Дата рег-ции: Февр. 2013  
Откуда: Россия


Помог: 9 раз(а)




tuareg пишет:
Правда?

Правда. Знак "=" - это присваивание Улыбка


-----
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB