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


Автор: vov4eg 29.12.2012, 17:00
Привет всем.

У меня есть контактная форма с капчей, и нужно чтобы при условии не правильно введенного поля "email" капча перегружалась. Отправка данных капчи и формы происходит с помощью аякса.

Каждый раз когда я нажимаю на сабмит отправляеться один дополнительный запрос к серверу, то есть первый раз все работает как надо и капча заменяеться но новую сгенерированую на сервере, но на второй раз сервер присылает уже 2 капчи, на 3 три и т.д. В итоге капча начинает меняеться каждый раз когда приходит ответ от сервера что не есть хорошо + куча не нужных запросов к серверу.

Код

    jQuery('.wpcf7-form').submit(function(){
        jQuery(".wpcf7-form").ajaxSuccess(function(e, xhr, settings){
            var json_responce = jQuery.parseJSON(xhr.responseText);
            if(jQuery.isArray(json_responce.invalids)){
                var array_count = json_responce.invalids.length;
                for(i = 0; i < array_count; ++i){
                    if(json_responce.invalids[i].into.indexOf('.email') != -1){
                        var jqxhr_check = jQuery.post(ajax_request.url, {action: 'request', reload:'true'});
                        jqxhr_check.complete(function(data){
                            var reloaded_captcha = JSON.parse(data.responseText);
                            jQuery('#Check').html(reloaded_captcha);
                        });
                    }
                }
            }
        });
        
    });


Кто сталкивался с проблемой подскажите плз как избавиться от лишних запросов и поясните где я протупил?! 

Автор: Ripper 3.1.2013, 23:18
Я обычно использовал плагин для сабмита форм через аякс, либо сам писал обработчики, и как-то не знал о существовании ajaxSuccess (обычно обрабатывал просто success ф-ии $.ajax), но при каждом сабмите он будет повторно вешаться на .wpcf7-form. Т.е. если я 10 раз просабмичу форму, то на (".wpcf7-form") будет 10 раз повешен обработчик ajaxSuccess, что, видимо, не верно и может поэтому несколько капч приходит


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