2013-10-13 101 views
0

對不起,提出這樣一個基本問題。我想一個Ajax功能添加到我的輸入網頁,其中做:Ajax檢查網址是否存在然後重定向

  1. 使用blockUI插件添加它講述一個彈出窗口,用戶等待
  2. 在同時阿賈克斯檢測
  3. 輸出頁面的存在
  4. 如果計算完成後,阿賈克斯將瀏覽器重定向到輸出頁面(batchoutput.html

如果一切順利的話,將出現約1-2分鐘彈出消息,直到計算完成,那麼瀏覽器會重定向到batchoutput.html頁面。

但是,情況是:彈出消息窗口只出現一秒鐘,然後在一兩分鐘後瀏覽器轉到batchoutput.html。我的猜測是我的ajax函數有問題。看起來好像ajaxstartajaxstop發生故障。我可以提出一些建議嗎?

下面是代碼:

$('.input1_button').click(function() { 
    $(document).ajaxStart(function(){ 
     $.blockUI({ css: { 
      border: 'none', 
      padding: '15px', 
      backgroundColor: '#000', 
      '-webkit-border-radius': '10px', 
      '-moz-border-radius': '10px', 
      opacity: .5, 
      color: '#fff' 
     } }); 
    }); 
    $(document).ajaxStop(function(){ 
     $.unblockUI(); 
    }); 

    $.ajax({ 
     type: "post", 
     url: "/batchoutput.html", 
     data: $(".articles").serialize(), 
     dataType: "html", 
     success: function() { 
      window.location = '/batchoutput.html'; 
     } 
    }); 

}); 

回答

1

ajaxStop被觸發之後Ajax請求是完整完整意味着錯誤成功。

因此,你點擊後按鈕會發生什麼:

  • ajaxStart被激發,導致UI來阻止
  • Ajax請求/batchoutput.html進行
  • 如果請求失敗,ajaxStop被激發,引起UI疏通

我的建議是:

  • 阻止單擊按鈕時的UI(即,直接移動$.blockUIclick功能)
  • 後,重複發送Ajax請求,直到它成功完成(你可以使用JavaScript的本地函數setInterval或觸發ajaxError
  • 時要求succeds下一個請求),解鎖界面和重定向(此可以直接在success回調或ajaxSuccess方法)
+0

謝謝邁克爾。我認爲移除ajaxstop並將UI取消阻止成功! –

相關問題