6

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

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

在我的网站上,它运行良好。我使用 JavaScript 在表单中进行了简单的验证,但是如果用户通过 JavaScript,则会向用户显示一个Campaign Monitor网页:对他们的验证说是或否。

当用户订阅成功时,如果用户点击返回或使用 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)用于将我送回。

4

2 回答 2

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()在您的成功函数中确定您正在接收成功事件,如果您正在接收该事件,那么您知道这是您用来隐藏花式框的代码的具体问题。

于 2013-02-26T14:08:37.347 回答
2

我不知道 Campaign Monitor 但为什么不在文件加载时强制关闭您的fancybox?

$(document).ready(function(){
  $.fancybox.close(true);
}
于 2013-02-26T00:02:03.143 回答