- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Переиграть и победить: как анализировать конкурентов для продвижения сайта
С помощью Ahrefs
Александр Шестаков
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Приветствую вас и прошу помочь с jQuery + Ajax.
Ситуация такая:
Делаю форму регистрации. Кладу ее в отдельный <div>. "action" этой формы - файл-обработчик...
В файле - обработчике (process.php) следующее:
Таким образом, при удачной регистрации у меня имеет быть в наличии div с id="success"...
В хедере файла, в котором лежит форма регистрации - ajax, который перехватывает событие submit формы и направляет вывод в div с id="form_result"
Вроде использую live... Но fadeOut происходит только при повторной отправке формы. когда слой "success" УЖЕ есть в DOMe ... Гуглил насчет релоада DOM в jQuery, но кроме live() ничего не вижу...
Кто может помочь?
.live вешает обработку на документ,
может так попробовать?
topy, так, конечно, и было поначалу... ничего не меняется... jquery "не видит" слой с id='success' в DOMе документа (так как его там нет...), и срабатывает только при повторной отправке формы...
Вообще, вот так:
// тут использую live...
// обрабатываю форму и т.д... и вот тут вся загвоздка:
// хочу "погасить" div, в котором лежит форма, Если имеет быть в наличии div id="success"
Очень сложно понять, что вы не верно делаете. Вам не кажется?
Зачем вам вообще
и потом проверка наличия этого дива? Лишняя работа.
Отдавайте скриптом ответ в json, а в jquery в зависимости от ответа скрывайте форму или выдавайте сообщение об ошибке.
что-то вроде
Ну а в Jquery парсим json и в зависимости от result делаем нужное действие. Даже live не нужен.
ух, какие хитросплетения :)
Сделайте проще,
укажите в форме target:
<div id="regform">
<form action="process.php" id="newpost_form" name="newpost_form" target="my_target" method="post">
....
</form>
</div>
Далее:
<iframe id="my_target" name="my_target" src="#" style="width:0;height:0;border:0px solid #fff;"></iframe>
В обработчике process.php
function sendmessage($mes)
{
?>
<script language="javascript" type="text/javascript">window.top.window.returnform('<? echo $mes; ?>');</script>
<?
exit;
}
в $mes - передавайте флаг успешности регистрации
ну и в первом файле опишите функцию returnform
function returnform(data)
{
if (data=="formerr")
{
alert ('Не заполнена форма.');
}
elseif (data=="ok")
{
// Скрытие формы
}
return false;
}
Ведь намного проще :)
ух, какие хитросплетения
Вот как раз у вас хитросплетения. Нафиг нам iframe если мы юзаем ajax? Возвращение в каменный век?
Так делали до появления аякса, именно вместо этого гемора его и придумали.
Вот как раз у вас хитросплетения. Нафиг нам iframe если мы юзаем ajax? Возвращение в каменный век?
Так делали до появления аякса, именно вместо этого гемора его и придумали.
Если придумали аякс, то это не значит, что его нужно использовать там, где он не нужен.
Описанный мной способ абсолютно нагляден и гибок (обработчик возвращает флаг, JS его обрабатывает) и предлагает готовое решение, а не _общие рекомендации_.
Ну а в Jquery парсим json и в зависимости от result делаем нужное действие...
Похоже, что правильный путь...
С json еще не сталкивался... Как его "отпарсить"? Можете пример скинуть?
Trump, спасибо... но айфрейм действительно не хочется... хочется именно ajax-ом. Причем, именно им сейчас эти фишки и делают (видел часто... вот пробую "на себе"...)
Ну раз уж человек все равно использует JQuery - то лучше все через него и делать.
Не думаю, что фреймворк тут используется только для регистрации.
Я не спорю, ваш вариант рабочий. Просто я не стороник использования разных способов и методов в одном проекте. Нужно все держать в едином стиле - выбрали jquery - работаем с jquery.
Кстати, раз уж не хочется работать с json, но обработчик тоже может выводить только
А jquery
Просто первый вариант хорош тем, что можно указать текст для кажодй ошибки, например "неверный формат e-mail" или "Форма не заполнена", "Пароль слишком короткий" и т.п.
Нужно все держать в едином стиле - выбрали jquery - работаем с jquery.
Тут не поспоришь :)
Конечно из примера ТС не видно кода самого проекта, и опыта работы с Jquery, да и когда решений несколько удобнее выбрать наиболее быстрое и эффективное для данной задачи.
http://api.jquery.com/jQuery.parseJSON/
НУ по хорошему еще бы проверку ответа сервера нужно делать..., но это детали.