将加载图像添加到 jquery ajax 帖子中

发布于 2024-08-22 21:26:33 字数 603 浏览 10 评论 0原文

我有以下 javascript 通过 ajax 发布表单而不刷新屏幕。由于帖子需要一段时间,我想在处理过程中添加加载图像。

我看到 这篇文章 但它似乎只列出了 . load() 或 .get() 但不是 $.post。

<script type="text/javascript">
    $(document).ready(function() {
        $('#contact form').live('submit', function() {

            $.post($(this).attr('action'), $(this).serialize(), function(data) {

                $("#contact").replaceWith($(data));

            });
            return false;
        });
    });
</script>

i have the following javascript to post a form through ajax without refreshing the screen. Since the post take a little while, i wanted to add a loading image during processing.

I see this article but it seems to only list .load() or .get() but not $.post.

<script type="text/javascript">
    $(document).ready(function() {
        $('#contact form').live('submit', function() {

            $.post($(this).attr('action'), $(this).serialize(), function(data) {

                $("#contact").replaceWith($(data));

            });
            return false;
        });
    });
</script>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

悲凉≈ 2024-08-29 21:26:33

只需添加一些调用来隐藏/显示您的加载屏幕/div,无论如何:

<script type="text/javascript">
    $(function() {
        $('#contact form').live('submit', function() {
            $("#Loading").fadeIn(); //show when submitting
            $.post($(this).attr('action'), $(this).serialize(), function(data) {
                $("#contact").replaceWith($(data));
                $("#Loading").fadeOut('fast'); //hide when data's ready
            });
            return false;
        });
    });
</script>

<div id="Loading">I'm loading, image here, whatever you want</div>

Just add a few calls to hide/show your load screen/div, whatever:

<script type="text/javascript">
    $(function() {
        $('#contact form').live('submit', function() {
            $("#Loading").fadeIn(); //show when submitting
            $.post($(this).attr('action'), $(this).serialize(), function(data) {
                $("#contact").replaceWith($(data));
                $("#Loading").fadeOut('fast'); //hide when data's ready
            });
            return false;
        });
    });
</script>

<div id="Loading">I'm loading, image here, whatever you want</div>
多孤肩上扛 2024-08-29 21:26:33

我将其放入,以便在每个 ajax 调用上显示,无论我有哪一个(我有几个)

/* show the message that data is loading on every ajax call */
var loadingMessage = 'Please wait loading data for ' + defaultPageDoctor;
$(function()
{
    $("#Errorstatus")
    .bind("ajaxSend", function()
        {
            $(this).text(loadingMessage);
            $(this).show();
        })
    .bind("ajaxComplete", function()
    {
        $(this).hide();
    });
});

只需创建一个带有 #ErrorStatus id 的元素,例如:

<div class="newProcedureErrorStatus ajaxLoading " id="newProcedureErrorStatus">
    <span id="Errorstatus" class="ui-state-error-text newProcedureErrorStatusText"></span>
    <span id="Errorstatus2" class="ui-state-error-text newProcedureErrorStatusText">
    </span>
</div>

现在对于奖金回合,您可以使用此区域放置其他消息发布后,我还包括一个计时器:

/* show message for interval */
var saveMessageText = 'Saving...';
function ShowStatus(saveMessage, message, timeInMilliseconds)
{
    var errorMessage = $("#Errorstatus");
    if (saveMessage)
    {
        errorMessage.show();
        //var myNumber = 0;
        var myInterval = window.setInterval(function()
        {
            message = message + '...';
            errorMessage.text(message);
            errorMessage.show();
        }, 1000);
        window.setTimeout(function()
        {
            clearInterval(myInterval);
            errorMessage.hide();
        }, timeInMilliseconds);
    }
    else
    {
        errorMessage.text(message);
        errorMessage.show();
        window.setTimeout('$("#Errorstatus").hide()', timeInMilliseconds);
    };
};

像这样使用它:

 ShowStatus(true, 'Save Failed with unknown Error', 4000);

I put this in so that is shows on every ajax call, no matter which one I have (I have several)

/* show the message that data is loading on every ajax call */
var loadingMessage = 'Please wait loading data for ' + defaultPageDoctor;
$(function()
{
    $("#Errorstatus")
    .bind("ajaxSend", function()
        {
            $(this).text(loadingMessage);
            $(this).show();
        })
    .bind("ajaxComplete", function()
    {
        $(this).hide();
    });
});

Just create an element with the #ErrorStatus id such as:

<div class="newProcedureErrorStatus ajaxLoading " id="newProcedureErrorStatus">
    <span id="Errorstatus" class="ui-state-error-text newProcedureErrorStatusText"></span>
    <span id="Errorstatus2" class="ui-state-error-text newProcedureErrorStatusText">
    </span>
</div>

Now for the bonus rounds, you can use this area to put other messages up, I also include a timer:

/* show message for interval */
var saveMessageText = 'Saving...';
function ShowStatus(saveMessage, message, timeInMilliseconds)
{
    var errorMessage = $("#Errorstatus");
    if (saveMessage)
    {
        errorMessage.show();
        //var myNumber = 0;
        var myInterval = window.setInterval(function()
        {
            message = message + '...';
            errorMessage.text(message);
            errorMessage.show();
        }, 1000);
        window.setTimeout(function()
        {
            clearInterval(myInterval);
            errorMessage.hide();
        }, timeInMilliseconds);
    }
    else
    {
        errorMessage.text(message);
        errorMessage.show();
        window.setTimeout('$("#Errorstatus").hide()', timeInMilliseconds);
    };
};

use it like so:

 ShowStatus(true, 'Save Failed with unknown Error', 4000);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文