setInterval очистка div через короткое время - PullRequest
0 голосов
/ 01 июня 2019

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

Попробуйте установить setTimeOut вместо setInterval

setTimeout(function () {
    $("#private-message").load(window.location.href + " #private-message");
}, 2000);

$(document).ready(function () {
    var xhr2 = false;
    $(document).on('click', ".collapseAjax", function(){
      if(xhr2 !== false){
        xhr2.abort();
        xhr2 = false;
      }
      collapseAjax(this);
    });
    function collapseAjax(className) {
        var block_content = $(className).attr("data-target");
        block_content = block_content + "-content";
        $(block_content).empty();
        xhr2 = $.ajax({
            type: "GET",
            url: $(className).attr("urldata"),
            data: 'html',
            success: function (data) {
                if (data) {
                    $(block_content).append(data);
                }
            }
        });
    }
}
);

HTML-частей:

<li class="nav-item">
    <a class="nav-link collapseAjax" data-toggle="tab" data-target="#pv-user"  urldata="/test/show/{{$conv->id}}">SomeUser Name</a>
  </li>
<!-- Tab panes -->
<div class="tab-content">
  <div class="tab-pane container active" id="#pv-user"><div id="pv-user-content"></div></div>
</div>
<div id="pvMessage">
    @foreach($pv->PrivateMessages as $message) {{$message->userInfo->name}} : {!! $message->message !!}<br /> @endforeach
</div>

Я ожидаю, что вработать правильно и обновлять сообщение div правильно, не удаляя его.Фактические результаты просто удаляют часть #pvMessage.

...