Как перенаправить на пользовательскую кодовую страницу ошибок Joomla при возникновении ошибки в AJAX? - PullRequest
0 голосов
/ 06 августа 2010

Этот вопрос немного специфичен для joomla.

Я создал пользовательскую страницу ошибки error.php в /template/MY_TEMPLATE/error.php.Этот файл проверяет коды ошибок и отображает разные сообщения для каждого http-кода, который я установил (я проверяю с помощью $ this-> error-> code == '404').Обычно это работает хорошо.

Теперь вопрос в том, как мне обращаться с тем же, когда я использую ajax?Когда я делаю ajax-вызов, если происходит ошибка, я получаю обратно код состояния http, и ответом является вывод файла error.php.Когда я получаю сообщение об ошибке, я хотел бы перенаправить пользователя на error.php (пользовательскую страницу ошибки) с соответствующими кодами ошибок, которые будут отображать соответствующие сообщения!

Сценарий: - Я запрашиваю вызов ajax дляКомпонент с задачей (com_greatsuff), которая выполняет некоторые вызовы веб-службы для получения списка материалов на основе предоставленного кода элемента.Если код товара не найден в веб-сервисе, он возвращает ошибку 404. (Существует много других пользовательских кодов ошибок).Если это не был вызов ajax, он хорошо работает, когда я поднимаю ошибку (JError :: riseError), и отображает пользовательскую страницу ошибки.Но при вызове ajax он вернет http статус (404), но мне нужно перенаправить из javascript с соответствующим заголовком http.Спасибо, Танмай

Ответы [ 2 ]

0 голосов
/ 07 августа 2010

Хорошо, подумав о различных логиках, я применил следующее.Кто-то может помочь ... или дайте мне знать, если у кого-то есть лучшее решение.

  • Моя главная цель состояла в том, чтобы показать пользователю страницу ошибки, основанную на кодах ошибок (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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...