Я делаю приватную часть чата на 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.