2010-08-06 116 views
0

這個問題是針對joomla的。如何在ajax中發生錯誤時重定向到自定義Joomla錯誤代碼頁?

我在/template/MY_TEMPLATE/error.php中創建了自定義錯誤頁面error.php。這個文件檢查錯誤代碼,併爲我設置的每個http代碼顯示不同的消息(我檢查$ this-> error-> code =='404')。通常這很好。

現在的問題是,當我使用ajax時應該如何處理相同的事情?當我做一個Ajax調用,如果發生錯誤,我會返回http狀態碼,並且響應是error.php文件輸出。當我遇到錯誤時,我想用戶將錯誤代碼重定向到error.php(自定義錯誤頁面),這會顯示相應的消息!

場景: - 我正在請求一個帶有任務(com_greatsuff)的組件的ajax調用,該任務執行一些webservice調用,以根據提供的itemcode獲取內容列表。如果在webservice上找不到itemcode,它將返回404錯誤(還有很多其他的自定義錯誤代碼)。如果它不是ajax調用,它會很好地工作,因爲我引發錯誤(JError :: raiseError),並顯示自定義錯誤頁面。但在Ajax調用,它會返回HTTP狀態(404),但我需要從JavaScript與正確的http標題重定向。 謝謝, Tanmay

回答

0

好了,各種邏輯思維後,我申請以下。有人可能會幫助..或讓我知道,如果任何人有更好的解決方案。

  • 我的主要目的是向用戶展示基於該錯誤代碼自定義錯誤頁(404,403,500 ...)
  • 現在,當阿賈克斯失敗,並與特定的錯誤代碼返回(404 ,403,500 ..)它也返回完整的自定義錯誤頁面,正如我的問題所討論的。
  • 我抓住了完整的HTML頁面,並用它替換了當前頁面。

如:

$.ajax({ 
    url: 'index.php?option=com_test&task=listdata&no_html=1', 
    success: function(data) { 
    $('.result').html(data); 
    alert('Load was performed.'); 
    } 
    failure: function(data){ 
    document.write(""); 
    document.close(); 
    document.write(data.responseText); 
    document.close(); 
} 
}); 

這將基本上覆蓋通過的Joomla生成的自定義錯誤頁當前頁面。

請讓我知道如果我做錯了什麼。

謝謝, Tanmay

+0

@anyone我可以請得到一些指導! 謝謝 – jtanmay 2010-08-09 15:25:59

0
+0

感謝您的回覆。我已經創建了自定義錯誤頁面,該頁面適用於404或任何其他錯誤代碼。但我不知道應用重定向的Ajax調用。讓我們用我正面臨的情景更新這個問題。 – jtanmay 2010-08-06 18:55:06

+0

你可以請下面的我的執行指導。 謝謝 – jtanmay 2010-08-09 15:26:44

+0

@jtanmay:你的ajax代碼似乎很好,問題是什麼? – Sarfraz 2010-08-09 15:46:49

相關問題