Вызов $ .ajax выдает ошибку при переходе на другую страницу до выполнения запроса - PullRequest
2 голосов
/ 19 мая 2010

Я столкнулся с проблемой в Firefox (не происходит в IE), когда мой Javascript запускает вызов службы, что может занять некоторое время для загрузки. Если пользователь переходит на другую страницу до завершения вызова, вызывается метод error объекта jQuery.ajax().

Я ищу способ:

  1. Не выдается ошибка, когда пользователь переходит на другую страницу, когда запрос еще не завершен, ИЛИ
  2. Пусть метод ошибок различает «настоящие» ошибки и эту ошибку.

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

Мой простой тестовый код включает в себя следующий Javascript и сервис, который спит в течение 20 секунд, а затем возвращает строку.

<script type="text/javascript" language="javascript">
    $(document).ready(function ()
    {
        $('#testLink').click(function ()
        {
            $.ajax({
                type: "POST",
                url: "/Services/NU.Web.NUnet.Services.UserService.asmx/LongRunningService",
                data: "{}",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (data, textStatus, xhr)
                {
                    console.log(data);
                    console.log(textStatus);
                    console.log(xhr);
                },
                error: function (xhr, textStatus, errorThrown)
                {
                    console.log(xhr);
                    console.log(textStatus);
                    console.log(errorThrown);
                }
            });
        });
    });
</script> 

1 Ответ

3 голосов
/ 19 мая 2010

Попробуйте:

<script type="text/javascript" language="javascript">
    $(function() {
        $('#testLink').click(function() {
            $.ajax({
                type: "POST",
                url: "/Services/NU.Web.NUnet.Services.UserService.asmx/LongRunningService",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (data, textStatus, xhr){
                    console.log(data);
                    console.log(textStatus);
                    console.log(xhr);
                },
                error: function (xhr, textStatus, errorThrown) {
                    if (xhr.status === 500) {
                        console.log(xhr);
                        console.log(textStatus);
                        console.log(errorThrown);
                    }
                }
            });
        });
    });
</script> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...