Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > JavaScript: Общие вопросы > Ajax в JQuery, как дождаться ответа |
Автор: prodex 12.10.2009, 21:48 |
Проблема в следующем: идет проверка валидности полей формы. Проверка идет через 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 12.10.2009, 22:47 | ||
никак ajax - это "асинхронная" обработка. Вопрос, что ты потом хочешь делать. Поэтому здесь
вместо "result = data", надо подставить вызов функции, которая и продолжит обработку после валидации. |
Автор: prodex 13.10.2009, 12:49 | ||||
про success то я знаю, у меня задача маленько другая. У меня идет валидация полей формы. Какое то поле нужно проверить на Ajax, но при этом нужно дождаться ответа (по Ajax), а уже потом переходит к следующему полю. |
Автор: IDVsbruck 13.10.2009, 15:36 |
Это не меняет принципа вызова следующей функции. Itsys уже сказал. Просто пересмотри структуру очереди валидации. К примеру, глобальная переменная - массив проверямых полей и рекурсивная функция-валидатор с асинхронным запросом-проверкой. А правильнее отдавать серверу все поля в одном запросе и получать ответ по всем полям (или по первому ошибочному): можно создавать на сервере json-строку со статусами проверки всех полей. Одним словом - вариантов много, но делать независимую задержку - это не только неправильно, но еще и глупо и бессмысленно. |
Автор: brother79 29.10.2009, 12:57 |
Я обычно делал на нажатие - return false, а после аякса - уже если успешно, то form.submit() из ф-ии ответа после аякса |
Автор: Любитель 3.11.2009, 23:45 |
Во-первых, редко нужна серверная проверка (понятно, что наличие пользователя в базе на клиенте не проверишь, но.. если говорить в целом). Во-вторых, в любом случае количество реквестов надо минимизировать. Если форма большая, то всю валидацию, требующую участия сервера, конечно, лучше сделать не на потере фокуса, а перед сабмитом формы, одним реквестом. |
Автор: IDVsbruck 4.11.2009, 14:18 |
Интересно, на чем основано такое безапеляционное утверждение? - Для серьезного проекта обязательно нужна. По своему опыту скажу, что в 99% использую, так как кроме введенной формы еще гипотетически можно предположить чужой запрос с данными, а также отправка через отлов и изменение веб-потока (забыл как называется этот ...нг), да и серьезный анализ данных получается только серверным языком. Понятно, предпроверка форм нужна - так сказать, "по-быстрому" проверить валидность и заполненность полей. |
Автор: Любитель 4.11.2009, 18:34 |
Ээ.. Вы невнимательно прочитали мой пост или просто не так его поняли. Речь идёт про аяксовую серверную проверку. Валидация имеет две цели: удобство и секьюрность. Второе - само собой делается только на сервере, но уже при сабмите, а не при заполнении формы. Первое - по возможности на клиенте (если сайт должен уметь работать и без JS, то первое также должно делать и на сервере - с выдачей красивых сообщений сервером). |
Автор: nikolay9999 7.12.2011, 21:39 |
Можно использовать async: false, для .ajax - это позволит сделать ассинхронный запрос - синхронным , тоесть сделать возможным выполнять действия после получения ответа. |