2013-11-26 8 views
0

У меня есть форма, которая хранит данные пользователя через вызов ajax.jQuery fadeIn div после перезагрузки страницы

При успешном завершении я обычно сбрасываю div с успешным сообщением. Однако я хочу перезагрузить страницу, чтобы обновить страницу, а затем исчезнуть в сообщении об успешном завершении.

Я использовал .load(), чтобы обновить div, а затем переключить форму, чтобы скрыть себя и т. Д. Но .load приводил к тому, что некоторые другие скрипты js не работали после того, как они были вызваны и т. Д., Так что теперь я собираюсь просто перезагрузить страницу.

Однако я хочу показать сообщение об успешном завершении после того, как страница была перезагружена.

Это пример:

if (check) { 
    $.ajax({ 
    type: "POST", 
    url: "process/updateuserpref.php", 
    data: $('.updatepref').serialize(), 
    dataType: "json", 
    success: function(response){ 

    if (response.updatePrefSuccess) { 
     location.reload(); 
     $('#successdisplay').fadeIn(1000); 
     $('#successdisplay').delay(2500).fadeOut(400); 
    } 

    } 
    }); 
    } 

Я знаю, что, очевидно, в

 $('#successdisplay').fadeIn(1000); 
    $('#successdisplay').delay(2500).fadeOut(400); 

Doesnt в настоящее время работают, но любая помощь в том, как я могу делать то, что я хочу?

Спасибо, Крэйг.

+2

когда вы делаете 'location.reload();' вы влипли. Вы либо находитесь в бесконечном цикле перезагрузок, либо если этот код инициируется событием, все потеряно, и сегодня не будет выцветания. – adeneo

+0

Используйте делегирование событий для ваших 'других js-скриптов' или повторно инициализируйте их после загрузки содержимого AJAX. Это будет полезное упражнение в изучении асинхронного кода. Вероятно, проблема связана с тем, что эти сценарии связаны с элементами, которые больше не существуют при обновлении HTML. – Jasper

+1

@adeneo Да, я бы порекомендовал не использовать 'window.location.reload()', но вместо этого изменил местоположение на нечто подобное с параметром строки запроса, чтобы указать, что что-то должно произойти (например, fade-in a element). – Jasper

ответ

0

Вместо простой перезагрузки вы могли бы послал GET переменную с перезагрузкой, а затем проверить, если переменная GET существует показать сообщение об успехе, если нет, то ничего не делать

я делаю то же самое, так это то, как я это:

Intead из reload() я:

window.location.href = document.location.protocol + "//" + document.location.hostname + document.location.pathname + «успех = 1' ;

Тогда в моем PHP скрипт я условный вывод:

<?php if($isset($_GET['success']) && $_GET[ 'success' ] == 1) { ?> 
    <div id="successdisplay"> 
     Changes performed Successfully 
    </div> 
<?php }?> 
+0

Это похоже на интересный способ сделать это. У меня есть утро завтра утром и попробуйте его. – Lovelock

Смежные вопросы