Страница $ .post to Error - PullRequest
       2

Страница $ .post to Error

1 голос
/ 03 августа 2009

Я делаю пост Ajax в моем коде, как это,

$.post("myAction",$("#myForm").serialize(), 
        function(response) {alert(response);});

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

Спасибо.

Ответы [ 5 ]

4 голосов
/ 03 августа 2009

Лучше использовать метод $ .ajax, потому что вы можете лучше обрабатывать сообщения об ошибках (например, если сервер возвращает ошибку 404 или что-то в этом роде). Вы можете использовать этот способ:

$.ajax({
    type: "POST",
    url: "page.php",
    dataType: "text",
    success: function(xhr) {
        if(xhr == 'error') {
            window.location.href = '/MyErrorPage.html';
        }
    },
    error: function(XMLHttpRequest, textStatus, errorThrown) {
        window.location.href = '/MyErrorPage.html';
    }
});
4 голосов
/ 03 августа 2009

Вы можете перенаправить на страницу с ошибкой в ​​зависимости от ответа, например:

$.post("myAction",$("#myForm").serialize(), 
        function(response) {
            alert(response);
            if(response == 'Error') {
                window.location.href = '/MyErrorPage.html';
            }

});

Или вы можете заменить содержимое текущей страницы ответом, например ::10000

$('body').html(response);
1 голос
/ 03 августа 2009

Если вы собираетесь показать возвращаемое значение как есть, это может ввести пользователей в замешательство, поскольку они ожидают, что все будет более детально, чем простая «ошибка».

Я думаю, что у Karim79 правильный подход, но он слишком сложен, потому что вам придется создавать совершенно новую страницу только для обработки ошибок.

Я бы порекомендовал вам настроить собственную функцию обработки ошибок на самой странице и на основе ответа показать удобочитаемое сообщение.

Это может выглядеть примерно так

$.post("myAction",$("#myForm").serialize(), 
        function(response) {
            alert(response);
            if(response == 'Error') {
                $('#errorMsg").html("Could not get results from server. Please try again later.");
            }

});
0 голосов
/ 03 августа 2009

Помимо приведенного выше совета, вы можете использовать плагин Jquery Form, который позаботится обо всех ваших потребностях в форме ajax.

URL: http://malsup.com/jquery/form/

0 голосов
/ 03 августа 2009

Возможно, вы можете попытаться присоединить обратный вызов к обработчику ajaxError-event :

$.ajaxError(
  function (event, XMLHttpRequest, ajaxOptions, thrownError) {
    window.location = '/error.html'
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...