如何在ajax中发生错误时重定向到自定义Joomla错误代码页?

时间:2010-08-06 18:34:46

标签: php jquery ajax joomla

这个问题对于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 Error。(还有许多其他自定义错误代码)。如果它不是ajax调用,它会很好,因为我引发错误(JError :: raiseError),并显示自定义错误页面。但是在ajax调用上,它将返回http状态(404),但我需要使用正确的http标头从javascript重定向。 谢谢, Tanmay

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

好的,在考虑了各种逻辑后,我应用了以下内容。有人可能会得到帮助......或者让我知道是否有人有更好的解决方案。

  • 我的主要目的是根据错误代码向用户显示自定义错误页面(404,403,500 ...)
  • 现在,当ajax失败并返回特定的错误代码(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