Запрос Jquery Ajax-скрипта по-прежнему загружается даже после прерывания вызова (состояние ожидания) - PullRequest
0 голосов
/ 20 марта 2019

Я попытался загрузить сценарий с помощью ajax-вызова с тайм-аутом. Если вызовы не выполняются после тайм-аута, я отменяю вызов, но когда я осмотрел вкладку сети, я вижу, что статус js все еще находится на рассмотрении, а также страницы загрузчик все еще загружается.

enter image description here

Файл сценария, который я пытался загрузить, представляет собой API Google Map из Китая. Если запрос не выполняется, я загружаю версию API на китайском языке, и она работает нормально, но для остановки загрузки страницы и отображения ниже сообщение.

jquery.min.js: 2 GET https://maps.googleapis.com/maps/api/js?key="--mykey---"&libraries=places&_=1553093568934 net :: ERR_TIMED_OUT

Мой код для загрузки и прерывания ниже

var xhr = $.ajax({
    url: "https://maps.googleapis.com/maps/api/js?key=keyyy&libraries=places",
    dataType: "script",
    timeout: 5000
  }).done(function() {
    //do stuff
    console.log("loaded");
  })
  .fail(function() {
    //do stuff
    console.log("fail");
    xhr.abort();
    $.ajax({
      url: "https://maps.google.cn/maps/api/js?key=keyy&libraries=places",
      dataType: "script",
      timeout: 5000
    }).done(function() {
      //do stuff
      console.log("loaded");

    })

  });

Я тоже пробовал это

        var xhr = $.ajax({
            url: "https://maps.googleapis.com/maps/api/js?key=key&libraries=places",
            dataType: "script",
            timeout: 5000,
            success:function(){

            },
            error:function(a,b,c){
                //do stuff
                console.log("fail");
                console.log(a,b,c);
                console.log(xhr.state());
                xhr.abort();
                console.log(xhr.state());
                $.ajax({
                    url: "https://maps.google.cn/maps/api/js?key=key&libraries=places",
                    dataType: "script",
                    timeout: 5000,
                    success:function(){
                        console.log("loaded chinese")
                    },
                    error:function(a,b,c){

                    }
                })
            }
        })

1 Ответ

0 голосов
/ 20 марта 2019

Согласно вашему коду, ваш прерывание не будет выполнено до тех пор, пока запрос не завершится неудачно или не истечет время ожидания после 5000 мс, но вам нужен обработчик ошибок, чтобы перехватить время ожидания.

Проверьте этот пост, чтобы узнать, как обрабатывать свойство timeout: Установить время ожидания для ajax (jQuery)

Проверьте это сообщение для получения дополнительной информации об отмене запроса: Прервите запросы Ajax, используя jQuery

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