Fancybox发出不必要的同步请求?

时间:2015-07-03 13:21:16

标签: jquery ajax fancybox-2

我有公式,我想通过ajax提交。因此,我正在使用jquery form plugin。好吧,这很好。

我收到了一个html页面,并希望将其传递给fancybox (v2.0)。但如果我要打开fancybox,我会收到这个知名的镀铬警告:

  

主线程上的同步XMLHttpRequest因不推荐使用   它对最终用户的体验产生不利影响。如需更多帮助,   检查http://xhr.spec.whatwg.org/

因此,我想知道两件事:

  1. 为什么会出现此警告,因为fancybox是否我的ajax请求都不使用async = false等。好吧,据我所知,我检查了fancybox的源代码,所以......
  2. 当我尝试第二次提交表单时,为什么会出现以下错误?

      

    未捕获的TypeError:$(...)。ajaxSubmit不是函数。

    我有一种感觉,在警告出现后,导致警告的功能会从上下文中删除,因此无法调用......?

  3. 如果我不使用fancybox - 例如我只是调用console.log(result) - 我没有收到错误。所以我觉得fancybox一定有问题。

    为什么我不直接调用我想要加载到fancybox内容的页面的url,正常人会这样做?好吧,因为fancybox没有选项将帖子数据传递给网址,因此我需要提交表单。 发送get-data是不可能的。

    这是有问题的代码:)

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

2 个答案:

答案 0 :(得分:0)

我发现,如果您传递给fancybox的内容中有src属性的脚本标记,则会出现错误。

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

目前我可以轻松绕过这个问题,但我会为fancybox打开一个问题。

答案 1 :(得分:-1)

尝试使用以下代码:

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