$ (form) .ajaxSubmit не является функцией - PullRequest
36 голосов
/ 11 марта 2011

Я пытаюсь использовать плагин проверки jquery для проверки формы и отправки содержимого с помощью запроса ajax.

Этот код находится в заголовке моего документа.

 $(document).ready(function() {
    $('#contact-form').validate({submitHandler: function(form) {
         $(form).ajaxSubmit();   
         contactSuccess() ;
         }
    });
});

Проверка работает.Тем не менее, отправка выполняется как обычно: при отправке страница перезагружается.Конечно, у меня есть резервное поведение не-js для браузеров, у которых не включен js.Но я бы хотел, чтобы слаженный пользовательский интерфейс работал.

Ошибка, которую я вижу в firebug: $ (form) .ajaxSubmit не является функцией

Что я могу делать неправильноздесь

Ответы [ 7 ]

72 голосов
/ 11 марта 2011

Полагаю, у вас нет подключаемого модуля jquery.ajaxSubmit не является основной функцией jquery, я считаю.

Примерно так: http://jquery.malsup.com/form/

UPD

<script src="http://malsup.github.com/jquery.form.js"></script> 
6 голосов
/ 11 февраля 2014

это новая функция, поэтому вы должны добавить другой файл lib после jQuery lib

<script src="http://malsup.github.com/jquery.form.js"></script>

это будет работать .. Я проверил .. надеюсь, что это будет работать для вас ..

3 голосов
/ 13 июля 2012

Ajax Отправить форму без обновления страницы, используя jquery ajax метод, сначала включите библиотеку jquery.js и jquery-form.js, затем создайте форму в формате html:

<form action="postpage.php" method="POST" id="postForm" >

<div id="flash_success"></div>

name:
<input type="text" name="name" />
password:
<input type="password" name="pass" />
Email:
<input type="text" name="email" />

<input type="submit" name="btn" value="Submit" />
</form>

<script>
  var options = { 
        target:        '#flash_success',  // your response show in this ID
        beforeSubmit:  callValidationFunction,
        success:       YourResponseFunction  
    };
    // bind to the form's submit event
        jQuery('#postForm').submit(function() { 
            jQuery(this).ajaxSubmit(options); 
            return false; 
        }); 


});
function callValidationFunction()
{
 //  validation code for your form HERE
}

function YourResponseFunction(responseText, statusText, xhr, $form)
{
    if(responseText=='success')
    {
        $('#flash_success').html('Your Success Message Here!!!');
        $('body,html').animate({scrollTop: 0}, 800);

    }else
    {
        $('#flash_success').html('Error Msg Here');

    }
}
</script>
2 голосов
/ 08 августа 2012

Попробуйте:

$(document).ready(function() {
    $('#contact-form').validate({submitHandler: function(form) {
         var data = $('#contact-form').serialize();   
         $.post(
              'url_request',
               {data: data},
               function(response){
                  console.log(response);
               }
          );
         }
    });
});
1 голос
/ 27 июля 2016

Drupal 8

Drupal 8 не включает JS-библиотеки на страницы автоматически.Поэтому, скорее всего, если вы встретите эту ошибку, вам нужно присоединить библиотеку 'core / jquery.form' к вашей странице (или форме).Добавьте что-то подобное в ваш массив визуализации:

$form['#attached']['library'][] = 'core/jquery.form';
1 голос
/ 23 марта 2012

Попробуйте ajaxsubmit библиотека.Это делает ajax submition так же как проверку через ajax.

Также конфигурация очень гибкая для поддержки любого вида пользовательского интерфейса.

Доступна демонстрационная версия с примерами js, css и html.

0 голосов
/ 24 ноября 2011
$(form).ajaxSubmit(); 

запускает другую проверку, приводящую к рекурсии. попробуйте изменить его на

form.ajaxSubmit(); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...