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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ajax в JQuery, как дождаться ответа 
:(
    Опции темы
prodex
Дата 12.10.2009, 21:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Проблема в следующем: идет проверка валидности полей формы. Проверка идет через Ajax от Jquery

var result = null;
function valide($action)
  $.ajax({
      url: '/admin/ajax/content/ajaxAction',
      type: 'POST',
      data:{action: action},
      success: function(data){
         result = data;
      },
      error: function(data){
         /* действие */
      }
   });

  /* Тут как то нужно ожидать пока result изменит свое значение (уйдет с null).*/

  return result;
}

Вопрос, собсвено, а как сделать реализацию ожидания?
PM MAIL   Вверх
Itsys
Дата 12.10.2009, 22:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1338
Регистрация: 21.1.2008
Где: г. Москва

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



никак ajax - это "асинхронная" обработка. Вопрос, что ты потом хочешь делать. Поэтому здесь
Код

      success: function(data){
         result = data;
      },

вместо "result = data", надо подставить вызов функции, которая и продолжит обработку после валидации.
PM MAIL WWW Skype   Вверх
prodex
Дата 13.10.2009, 12:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Itsys @ 12.10.2009,  22:47)
никак ajax - это "асинхронная" обработка. Вопрос, что ты потом хочешь делать. Поэтому здесь
Код

      success: function(data){
         result = data;
      },

вместо "result = data", надо подставить вызов функции, которая и продолжит обработку после валидации.

про success то я знаю, у меня задача маленько другая.
У меня идет валидация полей формы. Какое то поле нужно проверить на Ajax, но при этом нужно дождаться ответа (по Ajax), а уже потом переходит к следующему полю.
PM MAIL   Вверх
IDVsbruck
Дата 13.10.2009, 15:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Это не меняет принципа вызова следующей функции. Itsys уже сказал. Просто пересмотри структуру очереди валидации. К примеру, глобальная переменная - массив проверямых полей и рекурсивная функция-валидатор с асинхронным запросом-проверкой.
А правильнее отдавать серверу все поля в одном запросе и получать ответ по всем полям (или по первому ошибочному): можно создавать на сервере json-строку со статусами проверки всех полей.
Одним словом - вариантов много, но делать независимую задержку - это не только неправильно, но еще и глупо и бессмысленно.
PM MAIL   Вверх
brother79
Дата 29.10.2009, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Я обычно делал на нажатие - return false, а после аякса - уже если успешно, то form.submit() из ф-ии ответа после аякса


--------------------
PM MAIL WWW   Вверх
Любитель
Дата 3.11.2009, 23:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

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



Во-первых, редко нужна серверная проверка (понятно, что наличие пользователя в базе на клиенте не проверишь, но.. если говорить в целом). Во-вторых, в любом случае количество реквестов надо минимизировать. Если форма большая, то всю валидацию, требующую участия сервера, конечно, лучше сделать не на потере фокуса, а перед сабмитом формы, одним реквестом.


--------------------
PM MAIL ICQ Skype   Вверх
IDVsbruck
Дата 4.11.2009, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Любитель @  3.11.2009,  23:45 Найти цитируемый пост)
Во-первых, редко нужна серверная проверка

Интересно, на чем основано такое безапеляционное утверждение? - Для серьезного проекта обязательно нужна. По своему опыту скажу, что в 99% использую, так как кроме введенной формы еще гипотетически можно предположить чужой запрос с данными, а также отправка через отлов и изменение веб-потока (забыл как называется этот ...нг), да и серьезный анализ данных получается только серверным языком. Понятно, предпроверка форм нужна - так сказать, "по-быстрому" проверить валидность и заполненность полей.
PM MAIL   Вверх
Любитель
Дата 4.11.2009, 18:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

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



Ээ.. Вы невнимательно прочитали мой пост или просто не так его поняли. Речь идёт про аяксовую серверную проверку. Валидация имеет две цели: удобство и секьюрность. Второе - само собой делается только на сервере, но уже при сабмите, а не при заполнении формы. Первое - по возможности на клиенте (если сайт должен уметь работать и без JS, то первое также должно делать и на сервере - с выдачей красивых сообщений сервером).


--------------------
PM MAIL ICQ Skype   Вверх
nikolay9999
Дата 7.12.2011, 21:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Можно использовать async: false, для .ajax - это позволит сделать ассинхронный запрос - синхронным , тоесть сделать возможным выполнять действия после получения ответа.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




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


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

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