2015-07-03 85 views
3

我有formular,我想通过ajax提交。因此,我正在使用jquery form plugin。好吧,这工作正常。Fancybox使不需要的同步请求?

我收到一个html页面作为结果,并且想要将它传递给fancybox (v2.0)。但如果我要打开我收到这个众所周知的镀铬警告的fancybox:

Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience. For more help, check http://xhr.spec.whatwg.org/ .

因此,我想知道两件事情:

  1. 为什么会发生这种警告出现,因为无论是的fancybox既不是我的ajax请求使用async = false等。那么,据我所知,我检查了fancybox的源代码,所以...
  2. 为什么我会收到以下错误,当我尝试第二次提交表单时?

    Uncaught TypeError: $(...).ajaxSubmit is not a function.

    我有这样的感觉,即警告出现后,导致警告的功能将从上下文中移除,因此无法调用...?!

如果我不使用的fancybox - 当我比如就叫console.log(result) - 我不明白的错误。所以我猜想,fancybox肯定有什么问题。

为什么我不能直接调用我想要加载的fancybox内容的页面url,就像普通人一样呢?好吧,因为fancybox没有选择将邮件数据传递给url,因此我需要提交表单。 发送获取数据是不可能的。


这里是有问题的代码:)

$(domObject).ajaxSubmit({ 
    dataType: "html", 
    success: function(result) { 
     $.fancybox.open({ 
      padding: 0, 
      margin:  0, 
      content: result, 
      autoSize: false 
     }); 
    } 
}); 

回答

0

我发现,如果有与在src属性的脚本标记您传递给fancybox的内容,然后出现错误。

我想,那fancybox缓冲内容并等待,直到所有的javascript文件被加载......但这只是一个糟糕的猜测,因为带有href属性的链接标签不会发生行为。

此刻我可以轻松绕过这个问题,但我会为fancybox开一个问题。

+0

时正常工作,在ajax调用中的脚本可能总是与主页中的其他脚本冲突 – JFK

+0

这对我而言,谢谢! –

-1

尝试使用下面的代码:

$(domObject).ajaxSubmit({ 
    dataType: "html", 
    async: true, 
    success: function(result) { 
    $.fancybox(result, { 
     padding: 0, 
     margin:  0, 
     content: result, 
     autoSize: false 
    }); 
    } 
}); 
+0

ajax请求不是问题。 async参数默认为true。另外,当我删除代码打开fancybox,没有警告/错误出现 – emfi

+0

我也面临同样的问题,但能够解决它通过把async:true。我知道它默认是true,但它在我明确写出 – TechMech