【问题标题】:Slow down a JQuery ajax call?减慢 JQuery ajax 调用?
【发布时间】:2013-03-04 02:13:11
【问题描述】:

我正在为 jquery 开发一个 ajax 登录系统,一切似乎都运行良好,我的问题是如何在成功显示 gif 加载图像之前减慢通话或暂停 x 秒?

代码:

$('.AJAX').on('submit', function(event) 
{
    event.stopPropagation();
    event.preventDefault();

    var This = $(this);
    var Data = {};

    This.find('[name]').each(function(Index, Value) {

    var This = $(this),
    Name = This.attr('name'),
    Value = This.val();

    Data[Name] = Value
});

$.ajaxSetup(
{
    beforeSend:function()
    {
        $('.Msg').html('<img src="../Assets/Pictures/Loading.gif" />');
    },
    complete:function()
    {
        $('.Msg').find('img').remove();
    }
});

$.ajax(
{
    url:'Log.php',
    type:'POST',
    data:Data,
    success:function(Data)
    {
        $('.Msg').html('<span style="color:red">' + Data + '</span>').hide().fadeIn('fast');
    });

    return false;
});

【问题讨论】:

标签: javascript jquery ajax json


【解决方案1】:

您可以使用基本的 setTimeout 来延迟操作:

success:function(Data) {
  setTimeout(function(){
       $('.Msg').html('<span style="color:red">' + Data + '</span>').hide().fadeIn('fast');
  }, 5000); // wait 5 seconds before showing the message
});

仅供参考 jQuery .delay() 延迟效果队列中的效果。 .html() 不是一个效果,所以它不会受到那个方法的影响。

【讨论】:

  • 这不起作用,因为我使用 $.ajaxSetup 播放我的 gif,但这只会延迟 html。
  • 谢谢@rochal,我实际上并没有意识到这一点。 setTimeout 我在回答中展示的单个功能是一个很好的解决方案。
  • 你有没有考虑删除$.ajaxSetup.complete函数的内容?考虑到您还在 ajax 调用中使用了 success() 回调,您真的需要它吗?
猜你喜欢
  • 2016-09-20
  • 1970-01-01
  • 2013-08-26
  • 2012-05-28
  • 2016-05-11
  • 2013-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多