2015-01-08 48 views
1

當jsf ajax被重定向時,客戶端會收到一個成功的狀態碼,responseCode爲200,responseXML爲null。客戶沒有辦法知道它是重定向嗎?當監視客戶端上的事件時,有沒有辦法告訴ajax被重定向?

+0

它絕對在'responseXML'中(只需在瀏覽器的HTTP流量監視器中檢查HTTP響應)。否則,JS無法執行重定向作業。你究竟如何獲得它,以便它是'null'而不是一個具體的XML文檔?顯然你試圖以錯誤的方式獲得它。 – BalusC

+0

我簡單地做一個警報像下方和responseXML的被顯示爲空:\t \t \t \t \t \t \t警報( '狀態=' + ajaxData.status + '\ n' + 'responseCode =' + ajaxData.responseCode +「\ n'+ ajaxData.responseXML); –

+0

是的,瀏覽器流量監視器顯示重定向XML。我只是沒有從ajaxData.responseXML進入。如果ajax沒有被重定向,ajaxData.responseXML不爲空。 –

回答

1

在正常情況下,responseXML絕對不應該是null。鑑於此,您可以按照以下方式檢查當前的JSF ajax響應是否代表重定向以及它指向的位置。

jsf.ajax.addOnEvent(function(data) { 
    if (data.status == "complete") { 
     var redirect = data.responseXML.getElementsByTagName("redirect"); 

     if (redirect.length) { 
      var url = redirect[0].getAttribute("url"); 
      // ... 
     } 
    } 
}); 
相關問題