加载时的Django微调器(spin.js)

时间:2013-05-08 16:37:31

标签: javascript ajax django spin.js

我是Django的新手和这些东西,我需要一些提示或解决方案来添加微调器。 我使用spin.js,我用这种方式显示它:

 var target = document.getElementById('spin');
    var spinner = new Spinner(opts).spin(target);
    spinner.stop();
    function spin_stop()
    {
        spinner.stop();
    }
    function spin_start()
    {
        spinner.spin(target);
    }

此代码是从Web上的某个示例复制而来的。 我用<div id...>

显示微调器

现在有问题。

我在Django中有一个名为testScript的应用程序。该应用程序连接到不同的页面以验证登录信息。这是“漫长”过程,大约需要10秒。 在那个时候,我想在我的登录页面添加一个微调器。 在模板中,我有一个表单:

<form class="form-signin" action="/testScript/" method="post">

如果我想在这个表单的按钮中添加onclick事件,我的微调器会冻结。

我的testScript处理时如何显示微调器?

感谢名单

1 个答案:

答案 0 :(得分:1)

由于浏览器已更改页面并等待新页面响应,因此微调器冻结。

您可以尝试使用an animated gif作为微调器而不是spin.js,但这可能会冻结。

如果您的验证过程确实需要10秒以上,那么您最好的选择是使用Ajax提交POST,然后在服务器响应后重定向或显示响应。

如何使用Ajax取决于您的工作流程。使用Ajax进行POST的最简单方法是使用jQuery,如果你不介意额外的库。一旦它响应显示页面上div的响应或重定向到另一个视图。

$.ajax({
    url: "/testScript/",
    method: "POST",
    data: { //form data
    },
    success: function(data) {
        //Display response here
    },
    complete: function() {
        //Hide spinner here
    }
});

由于我没有足够的有关您的应用程序或标记的详细信息,因此这是非常准确的,但是这里有很多类似的解决方案可以帮助您。