Нажатие кнопки Назад после отправки формы fancyBox AJAX

Не уверен, что это вообще возможно, но у меня есть AJAX-форма, подобная этой скрипке:

http://jsfiddle.net/nicorellius/GfeEf/

На моем сайте все работает нормально. Я делаю простую проверку в форме с помощью JavaScript, но если пользователь проходит через JavaScript, ему предоставляется веб-страница Campaign Monitor: либо говорят "да", либо "нет" для своей проверки.

Когда пользователь успешно подписывается, если пользователь щелкает назад или использует обратную ссылку CM, fancyBox остается заполненным данными. Исходя из того, как у меня написан сценарий, он должен быть закрыт после отправки.

Это поведение Firefox в Linux и Windows. Chrome фактически очищает страницу и удаляет форму fancyBox. Раздел AJAX находится здесь:

$.ajax({
    type       :  "POST",
    cache      :  false,
    url        :  "http://<comapny_name>.createsend.com/a/b/c/abcdef/",
    data       :  $(this).serializeArray(),
    //  I've tried both of these commented out pieces to no avail.
    //beforeSend :  function() {  
                      //$.fancybox.close(true);
                  //},
    //success    :  function(data) {
                      //$.fancybox.close(true);
                  //}
});

Итак, несмотря на добавление:

success : function() {
              $.fancybox.close(true);
          }

к сценарию AJAX, я не могу закрыть его после отправки.

РЕДАКТИРОВАТЬ

Я должен также отметить, что это явление, по-видимому, происходит с Firefox, Safari и Opera. Chrome ведет себя так, как я и ожидал (например, при нажатии на обратную ссылку я получаю свежую перезагрузку страницы). Страница CM использует javascript:history.go(-1) отправить меня обратно.

2 ответа

Я понятия не имею о Campaign Monitor, но почему бы не принудительно закрыть ваш fancybox при загрузке документов?

$(document).ready(function(){
  $.fancybox.close(true);
}

Похоже, что вам может понадобиться код из ответа на этот вопрос: Как закрыть fancybox после Ajax Submit?

(Вот часть извлечена и изменена)

var fancyboxProxy = $.fancybox; //declared before $.ajax

//and then modify your success to:
success : function() {
          fancyboxProxy.close();
      }

Я бы тоже попробовал простой alert() или же conosle.log() в вашей функции успеха, чтобы определить, что вы получаете событие успеха, если вы получаете событие, то вы знаете, что это определенно проблема с кодом, который вы используете, чтобы скрыть fancybox.

Другие вопросы по тегам