我的网站中有一种GET
方法发出的Ajax请求。有一个收件箱,其中一些未读邮件被写入一些位置,一旦用户阅读了一条未读邮件,我就会使用Ajax请求向服务器更新未读邮件的数量,以获取新邮件。
问题在于,未读消息的数量恰好在服务器端,但是Ajax响应不是服务器在读取一些未读消息后所说的。例如,如果有4
条未读消息,则当我单击一条消息时,它将变成3
,而当我单击另一条未读消息时,它将再次为3
,而不是{{1}当我直接在浏览器中查看服务器响应时(请求是GET),它是2
而不是2
。因此,我确定服务器端是正确的,但Ajax响应不正确。
这是我的代码,其中包含一些Laravel代码以指定路线。带有注释3
的Ajax请求有问题。
//this is request to unread message
答案 0 :(得分:0)
我通过以下更改解决了问题
$(document).on('click', '.messageOutline .card-header', function () {
$.ajaxSetup({ cache: false });
var url = '{{route('messages.loadMessage', ":id")}}';
url = url.replace(":id", $(this).parent().parent().attr('id'));
var object = $(this);
$.get(url).done(function (data) {
$("#messageColumn").html(data);
if(object.hasClass('text-primary')){
object.removeClass('text-primary').addClass('text-dark');
var url = '{{route('messages.unreadMessages', ":id")}}';
var id = object.attr('id').substring(16);
url = url.replace(":id", id);
$.get({url:url, cache: false}).done(function (data) {
if(data == 0)
$("#user-"+id).find('.count').remove();
else{
$("#user-"+id).find('.count').html(data);
}
});
}
});
})
我将第二个Ajax请求移至第一个的成功功能。这样,我可以确定在读取一条消息并更新其在数据库中的read
属性后,未读消息的数量就会增加。