Зависают другие страницы попыткой открыть в браузере после запуска ajax запроса до его завершения

Тема в разделе "JavaScript", создана пользователем usergeyv, 24 июл 2020.

XEvil 4.0 Релиз Состоялся!
  1. usergeyv

    usergeyv Постоялец

    Регистр.:
    5 июл 2013
    Сообщения:
    149
    Симпатии:
    22
    Посылаю запрос на обновления данных, php (controller.php) скрипт дает ответ через, примерно 5-10сек, все это время, если открыть другие страницы или уйти с этой, браузер не грузит и не отдает до завершения обработки в controller.php
    вот мой скрипт
    HTML:
    <script>
    function UpSeed(id){
            if (!id) {
            swal("Произошла ошибка", "Не распознано ID публикации, попробуйте перезагрузить страницу (Ctrl+F5)!", "error");
              return false;
            }
            //////
            $('.btn-upseed').attr('disabled', 'disabled');
           
            $(".fa-displayblock").addClass("d-none");
            $(".fa-refresh-displaynone").removeClass("d-none");
           
            $.ajax({
            url: '/engine/ajax/controller.php',
            async: true,       
            data: {mod: 'up_seed', action: 'get', id: id},
            dataType: 'JSON',
            success: function(data) {
           
           $('.btn-upseed').removeAttr('disabled');
           
        if ( data.success !== true ) {
           swal("Предупреждения", data.message, "info");
         
           
            $(".fa-refresh-displaynone").addClass("d-none");
            $(".fa-displayblock").removeClass("d-none");
           
           
          return false;
          }
         
         
    if (data.status == 200) {
          swal("Успех", data.message, "success");
            $('.total_downloaded').html(data.total_downloaded);
            $('.torrent_seeders').html(data.total_seeds);
            $('.torrent_leechers').html(data.total_leachers);
            $('.last_date_up').html(data.last_date_up);
           
            $(".fa-refresh-displaynone").addClass("d-none");
            $(".fa-displayblock").removeClass("d-none");
           
            } else if(data.status == 402){
          swal("Предупреждения", data.message, "info");
           
            $(".fa-refresh-displaynone").addClass("d-none");
            $(".fa-displayblock").removeClass("d-none");
         
            } else {
          swal("Произошла ошибка", "Произошла неизвестная ошибка, попробуйте попытку через некоторое время!", "error");
           
            $(".fa-refresh-displaynone").addClass("d-none");
            $(".fa-displayblock").removeClass("d-none");   
                }
         },
         error: function() {
          swal("Произошла ошибка", "Произошла неизвестная ошибка, попробуйте перезагрузить страницу (Ctrl+F5)", "error");
           
            $(".fa-refresh-displaynone").addClass("d-none");
            $(".fa-displayblock").removeClass("d-none");
           }
         });
           
        return false;
        }
    
    </script>
    HTML:
     <div class="card-body pt-0">
                    <ul class="list-unstyled m-0 text-center">
                     <li class="grd" data-toggle="tooltip" title="Количество скачавших"><span class="total_downloaded fa-displayblock"><i class="fa fa-download  text-primary"></i> {total_downloaded}</span><span class="fa-refresh-displaynone d-none"><i class="fa fa-refresh fa-spin fa-pulse" aria-hidden="true"></i></span></li>
                     <li class="text-success" data-toggle="tooltip" title="Раздают"><span class="torrent_seeders fa-displayblock"><i class="fa fa-long-arrow-up" aria-hidden="true"></i> {torrent_seeders}</span><span class="fa-refresh-displaynone d-none"><i class="fa fa-refresh fa-spin fa-pulse" aria-hidden="true"></i></span></li>
                     <li class="text-danger" data-toggle="tooltip" title="Качают" ><span class="torrent_leechers fa-displayblock"><i class="fa fa-long-arrow-down" aria-hidden="true"></i> {torrent_leechers}</span><span class="fa-refresh-displaynone d-none"><i class="fa fa-refresh fa-spin fa-pulse" aria-hidden="true"></i></span></li>
                       <li data-toggle="tooltip" title="Дата последнего обновления пиров"><span class="last_date_up fa-displayblock"><i class="fa fa-calendar-o text-info mr-1" aria-hidden="true"></i> {last_date_up}</span><span class="fa-refresh-displaynone d-none"><i class="fa fa-refresh fa-spin fa-pulse" aria-hidden="true"></i></span></li>
                    </ul>
                    <button type="button" onClick='UpSeed( {news-id} )' class="btn btn-sm btn-outline-info text-center btn-upseed" role="button">
          <i class="fa fa-refresh " aria-hidden="true"></i> Обновить
        </button>
                </div>
    в чем может быть проблема?
     
  2. Q_BASIC

    Q_BASIC

    Регистр.:
    30 ноя 2013
    Сообщения:
    502
    Симпатии:
    1.173
  3. Absolute

    Absolute Крокодил ;)

    Регистр.:
    9 авг 2009
    Сообщения:
    565
    Симпатии:
    429
    Со стороны php вероятнее всего проблема.
    Попробуйте временно заменить содержимое /engine/ajax/controller.php на
    PHP:
    <?php
    $data 
    = array('success' => 'true''status' => '200');
    header('Content-Type: application/json');
    echo 
    json_encode($data);
    и посмотрите поведение страницы при запросе.
     
    usergeyv нравится это.
  4. usergeyv

    usergeyv Постоялец

    Регистр.:
    5 июл 2013
    Сообщения:
    149
    Симпатии:
    22
    Возможно я не корректно поставил вопрос или Вы не поняли, со стороны php все ок, я специально поставил для теста
    PHP:
    sleep(15);
    вот этих 15 сек даже текущую страницу не перезагружает, только после ответа php
     
  5. Absolute

    Absolute Крокодил ;)

    Регистр.:
    9 авг 2009
    Сообщения:
    565
    Симпатии:
    429
    Впечатление, что у Вас отключены асинхронные запросы. Хотя стоит async: true. Добавьте в конец функции alert('бла-бла'); перед return false;
    "бла-бла" выйдет сразу или после окончания запроса?
     
    usergeyv нравится это.
  6. usergeyv

    usergeyv Постоялец

    Регистр.:
    5 июл 2013
    Сообщения:
    149
    Симпатии:
    22
    сразу
     
  7. Absolute

    Absolute Крокодил ;)

    Регистр.:
    9 авг 2009
    Сообщения:
    565
    Симпатии:
    429
    Значит запрос выполняется асинхронно и всё хорошо со стороны фронтэнда. Возможно, что-то с браузером, как уже писали выше.
     
  8. usergeyv

    usergeyv Постоялец

    Регистр.:
    5 июл 2013
    Сообщения:
    149
    Симпатии:
    22
    Только что пробовал напрямую к моду up_seed без controller.php (DLE), все работает отлично ,
    посмотрел controller.php, а там dle_session(); и т.д, потому и не работало как нужно...
    вы тут были правы, спасибо