JQuery. представить более одного раза? - PullRequest
1 голос
/ 26 мая 2011

У меня есть следующий код:

$('.save').submit(function(e){
    var data = 'id=' + $(this).attr('name') + '&' + $(this).serialize();
    var messageBox = $(this).next('.message');
    messageBox.html('<div class="pending">Saving... please wait...</div>');
    $.post('save.php', data,
    function(response) {
        messageBox.html(response).delay(3000).fadeOut('slow');
    });
    e.preventDefault();
});

И это прекрасно работает, однако, когда пользователь снова нажимает «сохранить», кажется, что $('.save').submit(); больше не запускается .... Я, по крайней мере, не вижу ожидающего или успешного сообщения в messageBox.

Что мне не хватает?

EDIT

Я понял это. Когда я fadeOut, я не исчезаю из ошибки div, я исчезаю из всего messageBox div, и поэтому, когда он display:none, его уже ничто не возвращает.

1 Ответ

1 голос
/ 26 мая 2011

Скорее всего, проблема в том, что ваш AJAX не возвращается успешно.Добавьте к нему функцию .error ().

Пример кода из документации jquery:

// Assign handlers immediately after making the request,
// and remember the jqxhr object for this request
var jqxhr = $.post("example.php", function() {
  alert("success");
})
.success(function() { alert("second success"); })
.error(function() { alert("error"); })
.complete(function() { alert("complete"); });

// perform other work here ...

// Set another completion function for the request above
jqxhr.complete(function(){ alert("second complete"); });

http://api.jquery.com/jQuery.post/

...