Как добавить класс загрузки, пока данные формы не будут возвращены с помощью jQuery?

#javascript #jquery

#javascript #jquery

Вопрос:

При отправке я хотел бы добавить класс .loading в #results до тех пор, пока данные не будут возвращены, поэтому класс будет удален.

Как меняется код?

 $(function(){
    $("#myform").submit(function(event){
        event.preventDefault();


        $.post('mail.php', $("#myform").serialize(), function(data) {
            $('#results').hide().html(data).fadeIn('slow').delay(2000).hide(1);
        });
    });
});
  

Ответ №1:

Если я вас правильно понял:

 $(function(){
    $("#myform").submit(function(event){
        event.preventDefault();

        // Add the class here:
        $("#results")
            .show()
            .addClass("loading");

        $.post('mail.php', $("#myform").serialize(), function(data) {
            $('#results')
                .hide()
                .html(data)
                .fadeIn('slow')
                .delay(2000)
                .hide(1)
                .removeClass("loading"); // Remove the class here.
        });
    });
});
  

Комментарии:

1. Вы правы, я отредактировал приведенный выше фрагмент, чтобы теперь он работал. Кроме того, вот скрипка. jsfiddle.net/fkw5s/6

2. Теперь я не могу получить никакого возврата. Класс загрузки теперь появляется навсегда. Ранее, даже если класс загрузки работал в первый раз, он возвращал данные. В mail.php существует простая mail() функция освещения.

3. Есть ли ошибка от ajax? В скрипке я изменил значение "mail.php" на an "" , чтобы оно отправляло сообщение самому себе (потому что mail.php не существует в этом контексте).

4. Нет, ошибки нет, потому что я проверил ее другими методами. Кажется, все работает.

5. Сработало. Я перезапустил Firefox и работал. Иногда я не понимаю, как компьютеры «думают». Спасибо. Принято и 1