我正在使用jquery在Laravel上进行私人聊天。当我使用选项卡加载时,引导程序将私有部分启动,所有消息均由ajax调用加载。当我单击要显示的消息时,我已经在js中使用setInterval实现了。但是它显示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部分。