显示加载图标,然后重定向到新页面

问题描述:

可以说我有一个页面“page1”,它由一些信息和一个名为“Add”的按钮组成。显示加载图标,然后重定向到新页面

当我点击这个按钮时,它会打开一个弹出式模式窗口,它由一个大约有10个字段的窗体组成,并提交按钮。一旦我点击这个按钮,我用ajax post提交表单,并在服务器端插入并更新操作并返回成功或失败结果。

在这个ajax过程中,我显示一个加载图像。我正在尝试的是在这个加载映像之后它应该重定向到新的页面。让我们说“page2”。但在我的代码中,我看到加载停止后,我看到模式窗口和“page1”大约2-3秒,然后只有它重定向到“page2”。

我不确定我的问题是否合乎逻辑,但仍然有任何方法可以阻止它。 下面我有一个ajax处理代码。

谢谢。

$.ajax({ 
     type: 'POST', 
     url: 'page2.php', 
     data: { 
      'data': form_data 
     }, 
     success: function(response) 
     { 
      var arr = JSON.parse(response); 
      if(arr.success == true) { 
       window.location.href = 'page3.php'; 
      } 
      else { 
       alert('There are some error while saving record.'); 
      } 
     }, 
     beforeSend: function() 
     { 
      $('.loader').show().delay(9000); 
     }, 
     complete: function(){ 
      $.fancybox.close(); 
      $('.loader').hide(); 
     } 
    }); 
+0

您是否尝试移动'$('。loader')。hide();'到'success'里面的最后一行? – Arg0n

+0

如果你重定向成功,为什么即使有'$('。loader')。hide();'在完成时,图像将因为你被重定向到一个不同的页面而离开。你需要的唯一地方就是你的'警报'的位置。 – George

+0

@George谢谢。现在我明白了 –

$.ajax({ 
    success: function(response) 
    { 
     ... 
     if(arr.success == true) { 
      ... 
     } 
     else { 
      ... 
      $('.loader').hide(); 
     } 
    }, 
    ... 
    complete: function(){ 
     $.fancybox.close(); 
    } 
}); 

ajaxrequest完成后不要隐藏装载机。

+1

可能值得添加它们需要将它添加到'else'块的if(arr.success == true)' – George

+0

是的,你是对的。应该隐藏弹出窗口,因为没有重定向。 –

+0

@AndreiTodorut非常感谢 –