JQuery AJAX успех + исчезновение - PullRequest
1 голос
/ 06 декабря 2011

Я использую AJAX для загрузки содержимого опроса в контейнер на странице, и во время перехода я делаю fadeOut контейнер и fadeIn, когда это будет сделано.Он отлично работает для страниц 1-4, но перестает работать для страницы 5. Контент загружается для страницы 5, но контейнер не исчезает.

success: function(data){
    $("div#surveyContainer").fadeOut(function(){
        $("div#surveyContainer").html(data).hide().fadeIn();
    }); // end fadeout
}

Нет ссылки на surveyContainer где-либо встраница 5. Все, о чем я могу думать, - это то, что время ожидания истекает, и fadeIn не срабатывает.Время загрузки составляет около 36 мс.Я установил php-скрипт, куда он отправляет data, чтобы сообщить обо всех ошибках (а данные просто попадают в БД), но все, что я получаю, - это ожидаемый контент, но контейнер остается display:none.Если я удаляю фейды, все работает нормально: /

Я тоже пробовал это безрезультатно:

success: function(data){
    $("div#surveyContainer").fadeOut(function(){
        $("div#surveyContainer").html(data);
        $("div#surveyContainer").fadeIn();
    }); // end fadeout
}

Ответы [ 3 ]

2 голосов
/ 06 декабря 2011

Попробуйте добавить .stop(); см. Ссылку здесь

success: function(data){
    $("div#surveyContainer").fadeOut(function(){
        $(this).html(data).stop(true, true).fadeIn();
    }); // end fadeout
}

Это должно остановить любые анимации, которые происходят в данный момент, заставить их идти прямо к конечной точке (где они были анимированы) и очистить очередь анимации. Вы, вероятно, тоже можете избавиться от hide().

Кроме того, вы можете просто использовать this внутри обратного вызова, ну, я не знаю почему. но вы можете.

1 голос
/ 07 декабря 2011

Не ссылаться на http://code.jquery.com/jquery-latest.js со страницы, использующей шифрование (HTTPS). Разместите код локально.

1 голос
/ 06 декабря 2011

Не уверен, почему это будет срываться на отдельной странице.

Возможно, вы могли бы попробовать это в обратном вызове .hide():

$("div#surveyContainer").html(data).hide('slow', function(){
    $(this).fadeIn();
});

Как указал Interstellar_Coder. Вы уже скрыли div#surveyContainer, когда исчезэто из.Теперь вам просто нужно загрузить данные и добавить их.

success: function(data){
    $("div#surveyContainer").fadeOut(function(){
        $(this).html(data).fadeIn(); // Removed the .hide()
    }); // end fadeout
}
...