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
Форумы портала PHP.SU :: Версия для печати :: Есть проблемы с обработчиком submit!!!!
Форумы портала PHP.SU » Клиентская разработка » JavaScript & VBScript » Есть проблемы с обработчиком submit!!!!

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

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

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. }


но это как пример костыля, а вообще зачем делается аякс запрос?
возможно есть смысл делать запрос еще при заполнении формы, чтоб клиент видел свои лаги раньше и вам не приходилось лепить костыли
3. alnik-75 - 23 Апреля, 2014 - 09:27:18 - перейти к сообщению
я так и делаю. Наверное, немного не так объяснил. аякс-запросом запросом осуществляю авторизацию пользователя. Если ошибок не выявлено (авторизация прошла успешно), то вся форма отправляется в php-обработчик. Если же выявлены ошибки, то submit должен прекратиться.
В данном то случае запрос асинхронный и при его выполнении продолжает действовать submit, не дожидаясь результатов аякс -авторизации
Наверное, сделаю, чтобы аякс запрос был синхронным. Есть ли другие пути ?
4. tuareg - 23 Апреля, 2014 - 11:59:17 - перейти к сообщению
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.  
5. DlTA - 23 Апреля, 2014 - 12:01:01 - перейти к сообщению
ввести некую глобальную переменную
по умолчанию false
субмит проверяет состояние этой переменной, если она true то делаем отправку, иначе ждем
6. alnik-75 - 23 Апреля, 2014 - 12:39:26 - перейти к сообщению
я как и говорил выше запрос сделал синхронным и все стало работать хорошо
7. nerv - 24 Апреля, 2014 - 00:00:45 - перейти к сообщению
DlTA пишет:
if(data = OK){

Однако

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

Однако

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

Улыбка

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

alnik-75, читай про асинхронные приложения.
8. tuareg - 24 Апреля, 2014 - 09:16:41 - перейти к сообщению
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. if(data = "ok")
  3.  

Ну да описка. И? Главное логика )))
9. nerv - 24 Апреля, 2014 - 11:40:51 - перейти к сообщению
tuareg пишет:
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. if(data = "ok")
  3.  

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

описка #2. И главное - логика Улыбка
10. Zuldek - 24 Апреля, 2014 - 11:45:03 - перейти к сообщению

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

эпично
11. tuareg - 24 Апреля, 2014 - 12:06:37 - перейти к сообщению
nerv пишет:
описка #2. И главное - логик

Работать будет? Будет. Как надо? Как надо. В чем проблема?
12. nerv - 24 Апреля, 2014 - 12:49:00 - перейти к сообщению
tuareg пишет:
В чем проблема?

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

http://learn[dot]javascript[dot]ru/play/wMG4yb
13. tuareg - 24 Апреля, 2014 - 12:54:01 - перейти к сообщению
Правда? А вот здесь получается нет. http://jsfiddle[dot]net/AAXqB/
14. nerv - 24 Апреля, 2014 - 13:15:29 - перейти к сообщению
tuareg пишет:
Правда?

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

 

Powered by ExBB FM 1.0 RC1