在正常表单上加载GIF提交

时间:2016-07-06 06:08:14

标签: javascript php jquery html ajax

我不知道这是否可行,因为根据我的概念,它不是。我有一个表格:

<form action="/loadLotsOfRecords" method="get">
<input type="text" name="email" />
<input type="submit />
</form>

现在这个表单需要至少10-15秒才能加载,因为显然有很多记录。我知道使用AJAX我可以加载GIF并加载记录。但是有没有一种方法可以在不使用AJAX的情况下在页面加载时在15秒内显示GIF。如果我使用windows.load函数,它只会在下一页上旋转。我需要的是代替浏览器加载我想在我的身体上同时加载。感谢

4 个答案:

答案 0 :(得分:8)

您只需要在成功提交表单时向您显示加载程序gif。通过这种方式,加载gif出现在页面上并一直显示,直到处理后页面被重定向到下一页。除非您预计表单提交中有任何错误,否则您不必关心隐藏加载。只有在成功提交表单时才应显示此加载程序。

&#13;
&#13;
yum -y install gcc-c++
&#13;
$(document).ready(function(){
  $("#myform").on("submit", function(){
    $("#pageloader").fadeIn();
  });//submit
});//document ready
&#13;
#pageloader
{
  background: rgba( 255, 255, 255, 0.8 );
  display: none;
  height: 100%;
  position: fixed;
  width: 100%;
  z-index: 9999;
}

#pageloader img
{
  left: 50%;
  margin-left: -32px;
  margin-top: -32px;
  position: absolute;
  top: 50%;
}
&#13;
&#13;
&#13;

答案 1 :(得分:2)

您需要使用blockUi显示阻止页面,当您单击提交按钮时,它们将被阻止为整页。您只需全局编写提交按钮单击事件即可。

$(function () {
    $('form').submit(function () {
        if ($(this).valid()) {
            $(':submit').attr('disabled', 'disabled');
            StartBlockPage()
        }
    });
});

$(function () {
  StartBlockPage()
});

function StartBlockPage() {
    var block_body = $("#body");
    $(block_body).block({
        message: '<div class="fa fa-spinner spinner spinner--steps2 font-large-5"></div><br /><br /><h2>Please wait until the server responds.</h2>',
        overlayCSS: {
            backgroundColor: '#FFF',
            opacity: 0.8,
            cursor: 'wait',
            height: '200vh'
        },
        css: {
            border: 0,
            padding: 0,
            backgroundColor: 'transparent',
        }
    });
}

function CloseBlockPage() {
    var block_body = $("#body");
    $(block_body).unblock();
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.0.0/jquery.min.js"></script>

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.blockUI/2.70/jquery.blockUI.js"></script>
<link href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous">

<html>
<body id="body">
</body>
</html>

答案 2 :(得分:0)

  • 您需要在Java脚本中使用setTimeout函数,因为它启用了您的 加载程序而不加载网页中的其他元素
    突出显示。      使用AJAX的目的是为了在后台加载所需的数据,这就是您的浏览器尝试执行以下操作的原因 显示页面中的所有其他元素。

          setTimeout(function(){
            Loader.show();  
                $.ajax({
                    type: "GET",
                     url: "XXXXXXX.htm",
    
                     data: { your_data},
                     success:function(result)
                     {
                         Loader.hide();
                     },
                     complete:function(){
                         Loader.hide();
                     },
                     error:function(){
                         Loader.hide();
                     }
                     });
    
            },1);
    

答案 3 :(得分:0)

$(function () {
    $('form').submit(function () {
        if ($(this).valid()) {
            $(':submit').attr('disabled', 'disabled');
            StartBlockPage()
        }
    });
});

$(function () {
  StartBlockPage()
});

function StartBlockPage() {
    var block_body = $("#body");
    $(block_body).block({
        message: '<div class="fa fa-spinner spinner spinner--steps2 font-large-5"></div><br /><br /><h2>Please wait until the server responds.</h2>',
        overlayCSS: {
            backgroundColor: '#FFF',
            opacity: 0.8,
            cursor: 'wait',
            height: '200vh'
        },
        css: {
            border: 0,
            padding: 0,
            backgroundColor: 'transparent',
        }
    });
}

function CloseBlockPage() {
    var block_body = $("#body");
    $(block_body).unblock();
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.0.0/jquery.min.js"></script>

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.blockUI/2.70/jquery.blockUI.js"></script>
<link href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous">

<html>
<body id="body">
</body>
</html>