![]() |
Модераторы: Sardar, Aliance |
![]() ![]() ![]() |
|
prodex |
|
|||
Новичок Профиль Группа: Участник Сообщений: 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; } Вопрос, собсвено, а как сделать реализацию ожидания? |
|||
|
||||
Itsys |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1338 Регистрация: 21.1.2008 Где: г. Москва Репутация: 12 Всего: 34 |
никак ajax - это "асинхронная" обработка. Вопрос, что ты потом хочешь делать. Поэтому здесь
вместо "result = data", надо подставить вызов функции, которая и продолжит обработку после валидации. |
|||
|
||||
prodex |
|
||||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 29.5.2008 Репутация: нет Всего: нет |
про success то я знаю, у меня задача маленько другая. У меня идет валидация полей формы. Какое то поле нужно проверить на Ajax, но при этом нужно дождаться ответа (по Ajax), а уже потом переходит к следующему полю. |
||||
|
|||||
IDVsbruck |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 778 Регистрация: 12.11.2006 Репутация: 8 Всего: 22 |
Это не меняет принципа вызова следующей функции. Itsys уже сказал. Просто пересмотри структуру очереди валидации. К примеру, глобальная переменная - массив проверямых полей и рекурсивная функция-валидатор с асинхронным запросом-проверкой.
А правильнее отдавать серверу все поля в одном запросе и получать ответ по всем полям (или по первому ошибочному): можно создавать на сервере json-строку со статусами проверки всех полей. Одним словом - вариантов много, но делать независимую задержку - это не только неправильно, но еще и глупо и бессмысленно. |
|||
|
||||
brother79 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 471 Регистрация: 18.8.2009 Репутация: 1 Всего: 6 |
Я обычно делал на нажатие - return false, а после аякса - уже если успешно, то form.submit() из ф-ии ответа после аякса
|
|||
|
||||
Любитель |
|
|||
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 1 Всего: 92 |
Во-первых, редко нужна серверная проверка (понятно, что наличие пользователя в базе на клиенте не проверишь, но.. если говорить в целом). Во-вторых, в любом случае количество реквестов надо минимизировать. Если форма большая, то всю валидацию, требующую участия сервера, конечно, лучше сделать не на потере фокуса, а перед сабмитом формы, одним реквестом.
|
|||
|
||||
IDVsbruck |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 778 Регистрация: 12.11.2006 Репутация: 8 Всего: 22 |
Интересно, на чем основано такое безапеляционное утверждение? - Для серьезного проекта обязательно нужна. По своему опыту скажу, что в 99% использую, так как кроме введенной формы еще гипотетически можно предположить чужой запрос с данными, а также отправка через отлов и изменение веб-потока (забыл как называется этот ...нг), да и серьезный анализ данных получается только серверным языком. Понятно, предпроверка форм нужна - так сказать, "по-быстрому" проверить валидность и заполненность полей. |
|||
|
||||
Любитель |
|
|||
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 1 Всего: 92 |
Ээ.. Вы невнимательно прочитали мой пост или просто не так его поняли. Речь идёт про аяксовую серверную проверку. Валидация имеет две цели: удобство и секьюрность. Второе - само собой делается только на сервере, но уже при сабмите, а не при заполнении формы. Первое - по возможности на клиенте (если сайт должен уметь работать и без JS, то первое также должно делать и на сервере - с выдачей красивых сообщений сервером).
|
|||
|
||||
nikolay9999 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 5.9.2011 Репутация: нет Всего: нет |
Можно использовать async: false, для .ajax - это позволит сделать ассинхронный запрос - синхронным , тоесть сделать возможным выполнять действия после получения ответа.
|
|||
|
||||
![]() ![]() ![]() |
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |