2013-08-28 40 views
0

我正在使用jsp,jquery和struts。我有一個理解重定向到登錄頁面的Ajax請求的問題。我試圖在XHR選項卡上的瀏覽器上看到請求,並在標題中給我302狀態碼。我無法理解如何重定向。 我的方法重定向到登錄頁面onajax請求

  1. 該應用程序有一個函數,用於檢查用戶是否登錄並具有重定向到登錄url的功能。
  2. 否則做一些其他處理。

如何在登錄後回到同一頁面?有什麼辦法嗎?此外,爲了在服務器端重定向,我使用了Response.redirect()。當我調試代碼和響應到客戶端時,AJAX函數中的錯誤函數執行不成功函數。有人可以解釋如何捕捉服務器的響應?

function buttonpress(param1,param2){ 
    $.ajax({ 
    type:"GET", 
    data:{ 
     X:param1, 
     Y:param2, 
    }, 
    url:"/application", 
    success:function(){ 
     alert("success message"); 
    } 
    error:function(){ 
     alert("error message") 
    } 
    }); 
} 
+0

重定向服務器端阿賈克斯內獲得致電 – Vandesh

回答

1
success:function(){ 
    //current page URL 
    var ref = document.URL; 
    location.href = '/login/?ref=' + ref; 
} 

您可以使用變量「裁判」回來在同一頁

0

注意,當你使用AJAX調用服務器並接收重定向響應。瀏覽器不會重定向,但會在重定向的位置自動檢索的內容和你的success功能最終會被傳遞從重定向的位置的內容。對於ajax請求,如果用戶未登錄,則不應使用重定向進行響應,您應該返回401 Unauthorized,而瀏覽器將在回調中處理此問題。以下是具體步驟:

  • 檢查,如果用戶登錄或不
  • 如果用戶沒有登錄,請檢查標題爲X-Requested-With: XMLHttpRequest(這表明一個Ajax請求)
  • 如果發現不經過認證,以401(對於Ajax請求)響應,否則以302響應(對於非Ajax請求)。

而且你的Ajax回調可以檢查是否有一個401響應,設置location.href你的登錄頁面。如果您可以在登錄頁面中將其設置爲當前頁面以重定向到此頁面,那麼您的登錄頁面中可能會有類似returnUrl查詢字符串參數的內容。在客戶端示例代碼:

$.ajax({ 
    type:"GET", 
    data:{ 
     X:param1, 
     Y:param2, 
    }, 
    url:"/application", 
    success:function() 
    { 
     alert("success message"); 
    }, 
    error:function() 
    { 
     alert("error message") 
    }, 
    statusCode: { 
    401: function() { 
     location.href = '/login/?returnUrl=' + document.URL; 
    } 
}); 
0

jQuery的(文件)。就緒(函數(){

 jQuery('#dialog').show(false); 
     jQuery('#MsgDel').show(false); 
     jQuery("#dialog").dialog({ 
      bgiframe: true, autoOpen: false, height: 250, modal: true, width: 250, 
      buttons: { 
       "Delete": function() { 

        var txtValue = $("#<%=txtid.ClientID %>").val(); 
        var txtrea = $("#<%=txtreason.ClientID %>").val(); 
        if (txtrea == '') { 

        } 
        else { 
         Delete(txtValue, txtrea); 
         $(this).dialog("close"); 
        } 
       }, 
       "Cancel": function() { 
        $(this).dialog("close"); 
       } 
      }, 
      close: function() { 
       $('#txtreason').val(""); 

      } 
     }); 
    }); 

</script> 
0
<script type="text/javascript"> 
    jQuery(document).ready(function() { 
     jQuery('#MsgDel').show(false); 
     jQuery("#MsgDel").dialog({ 
      bgiframe: true, autoOpen: false, height: 150, modal: true, width: 300, 
      buttons: { 
       "OK": function() { 
        $(this).dialog("close"); 
         --To Reload Page Again After Success Function 
        window.location.href = "DispatchInstructionList.aspx"; 
       } 
      }, 
      close: function() { 
      } 
     }); 
    }); 

</script> 
+0

它可以正常使用? – alpa