Symfony 3.2 - 加载状态直到页面满载

时间:2017-12-11 15:52:39

标签: javascript jquery symfony loading

大家好,

我遇到了一些javascript / symfony问题。我有一个页面需要超过10个secondes加载(其中有很多表格)。

问题是,当页面出现时,只有 html 才有效,当用户开始使用表单时,它不起作用(导致其堆栈ajax请求并且不返回任何内容)。

here an example set of ajax reponses for this page

所以我通过为每个提交设置加载状态来处理其中的一部分。 (我用过gasparesganga loading library。)

$(document).ajaxStart(function(){
        $.LoadingOverlay("show");
    });
    $(document).ajaxStop(function(){
        $.LoadingOverlay("hide");
    });

当页面完全加载时,一切都很好。

问题仍然存在于页面登陆和完全加载的时间之间。 我试图在用户登录页面时显示一个微调器:

$.LoadingOverlay("show");
window.onload = function() {
        console.log('window loaded');
        $.LoadingOverlay("hide");
    };    

尝试替换代码开头的代码:

<script>
    $("body").LoadingOverlay("show");
</script>

但这一切都不起作用;因此,当我登陆页面时,我首先看到HTML 8秒,然后它显示了微调器。

所以我的问题涉及到Symfony在这方面发挥作用的事实:控制器执行他的计算并显示视图,直到它获得完整的信息 - 然后加载JS。 如果有人能给我一些提示,那就太好了!

感谢阅读和帮助。

优优

2 个答案:

答案 0 :(得分:0)

其实我刚刚找到了如何获得它。 如果控制器花了太多时间来响应: 您可以在每个链接上放置一个加载屏幕(onclick())到重页面。 无需使用.hide()隐藏它,它将重定向... 在沉重的页面中,您在主体前面的标题中添加了一个脚本相同的加载屏幕

document.write('<div class = "loader centered" style="...">');

一旦你登陆页面,这将开始加载屏幕。 因此,当页面完全加载时,您可以删除视图代码底部的加载状态:

$(function() { //equals window.onload or ready
$('.loader').hide();
// ... retrieve opacity, pointer-events etc...

现在由于PHP只有一点点刷新(无法躲避它 - 完整的njs-),但它可以让你更好地控制用户操作。

答案 1 :(得分:0)

我认为您需要一个不依赖于Jquery库的加载器,因为Jquery尚未加载,所以加载器不会出现。也许你需要搜索一个js完整的装载机。祝你好运!