在fancyBox AJAX表单提交后单击“返回”

时间:2013-01-18 17:05:51

标签: ajax forms fancybox campaign-monitor

不确定这是否可能,但我有一个像这个小提琴的AJAX形式:

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

在我的网站上,它运行正常。我使用JavaScript在表单中进行了简单的验证,但如果用户通过JavaScript,则会向用户显示Campaign Monitor网页:要么是yay,要么是nay。

当用户成功订阅时,如果用户单击或使用CM反向链接,则fancyBox将保留填充的数据。根据我编写脚本的方式,它应该在提交后关闭。

这是Linux和Windows中的Firefox行为。 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 个答案:

答案 0 :(得分:2)

我不知道广告系列监视器,但为什么不在文档加载时强行关闭你的fancybox?

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

答案 1 :(得分:2)

看起来您可能想要答案中的代码:How to close fancybox after Ajax Submit?

(这是提取和修改的部分)

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

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

我还会在您的成功函数中尝试一个简单的alert()conosle.log()来确定您是否收到了成功事件,如果您收到该事件,那么您知道它特别是代码问题你正在使用隐藏花式框。