Нажатие кнопки Назад после отправки формы 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.