Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Применение библиотек > jquery получение формы с сервера


Автор: v2v 15.10.2008, 23:30
На страничке есть форма обрамлена div-ом, которая при сабмите обрабатывается с помощью скрипта:
Код

<script type="text/javascript">
$(document).ready(function(){
  var options = {     
    target: "#form_div",
    beforeSubmit: showRequest,  
    success: showResponse, 
    timeout: 3000 
  };

  // on submit  
  $('#myForm').submit(function() { 
    $(this).ajaxSubmit(options);     
    return false; // false disable redirect to page form.jsp
  }); 
});


target: "#form_div" значит , что я получаю ответ от сервера и пихаю его в див вместо формы. Ответа могут быть два типа : 
1 - форма не прошедшая валидацию , с сообщениями об ошибках
2 - сообщение что всё прошло удачно.

Проблема в первой ситуации: я повторно отправляю форму на сервер (submit) . НО! её уже не обрабатывает Ajax , а она сама переходит на страницу указаную в action ... что совершенно не правильно... Как исправить? помогите.

Автор: lusever 16.10.2008, 09:13
Скорее всего где-то ошибка js, и код генерирует ошибку прежде чем делает return false.
Можно попробовать action начинающий с решетки #, или просто на время отладки action убрать.

Автор: v2v 16.10.2008, 09:19
firebug сообщил бы об ошибке.
мне кажется дело в том , что после того как я вторично получаю с сервера форму и заменяю старую форму , новой $(document).ready(function(){ не обрабатывает новую форму, и форма срабатывает как обычная, без какого либо ajax.

но как это предотвратить ...

есть ещё один нюанс: форма у меня находиться не на самой странице, а в плавающем диалоге на этой странице, что то вроде этого : 
http://www.linkexchanger.su/2008/32.html , а вызов $(document).ready(function(){ находится на самой странице.
Дело в том , что если смотреть исходник странице, то скрипт обработки ajax там есть , а вот html самой формы нету ... т.е. див в котором должна находится форма как бы пустой ... заполняю я его ajax-ом вот так:
Код

$.get("load_form.html", function(data) {
            document.getElementById("form_div").innerHTML = data;
        });

и форма с сервера приходит нормально...

Автор: lusever 16.10.2008, 10:45
Страница перезагружается! Фаербаг сбрасывает сессию, ошибку можно и не увидеть.

Автор: v2v 16.10.2008, 12:32
ошибок нету. первый раз ведь ajax срабатывает правильно

Цитата(lusever @  16.10.2008,  10:45 Найти цитируемый пост)
Страница перезагружается!

вот в этом мне кажется вся загвоздка, у меня презагружается не вся страница а только div с формой, может ajax-javascript на странице уже не видит эту форму ? 

Автор: Samotnik 16.10.2008, 12:43
так ведь нельзя применять  form action  и  ajax    запросы  одновременно 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)