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

usergeyv

Местный житель
Регистрация
5 Июл 2013
Сообщения
152
Реакции
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>

в чем может быть проблема?
 

Q_BASIC

Хранитель порядка
Регистрация
30 Ноя 2013
Сообщения
514
Реакции
1.186
Думаю что-то с оптимизацией конкретного браузера. Ничего нагуглить не смог особо:)

Для просмотра ссылки Войди или Зарегистрируйся
 

Absolute

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

usergeyv

Местный житель
Регистрация
5 Июл 2013
Сообщения
152
Реакции
22
Со стороны php вероятнее всего проблема.
Попробуйте временно заменить содержимое /engine/ajax/controller.php на
PHP:
<?php
$data = array('success' => 'true', 'status' => '200');
header('Content-Type: application/json');
echo json_encode($data);
и посмотрите поведение страницы при запросе.
Возможно я не корректно поставил вопрос или Вы не поняли, со стороны php все ок, я специально поставил для теста
PHP:
sleep(15);
вот этих 15 сек даже текущую страницу не перезагружает, только после ответа php
 

Absolute

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

usergeyv

Местный житель
Регистрация
5 Июл 2013
Сообщения
152
Реакции
22
Только что пробовал напрямую к моду up_seed без controller.php (DLE), все работает отлично ,
посмотрел controller.php, а там dle_session(); и т.д, потому и не работало как нужно...
Со стороны php вероятнее всего проблема.
Попробуйте временно заменить содержимое /engine/ajax/controller.php на
PHP:
<?php
$data = array('success' => 'true', 'status' => '200');
header('Content-Type: application/json');
echo json_encode($data);
и посмотрите поведение страницы при запросе.
вы тут были правы, спасибо
 
Сверху