Ajax响应返回错误的响应

时间:2018-12-29 08:11:16

标签: javascript jquery ajax

我的网站中有一种GET方法发出的Ajax请求。有一个收件箱,其中一些未读邮件被写入一些位置,一旦用户阅读了一条未读邮件,我就会使用Ajax请求向服务器更新未读邮件的数量,以获取新邮件。

问题在于,未读消息的数量恰好在服务器端,但是Ajax响应不是服务器在读取一些未读消息后所说的。例如,如果有4条未读消息,则当我单击一条消息时,它将变成3,而当我单击另一条未读消息时,它将再次为3,而不是{{1}当我直接在浏览器中查看服务器响应时(请求是GET),它是2而不是2。因此,我确定服务器端是正确的,但Ajax响应不正确。

这是我的代码,其中包含一些Laravel代码以指定路线。带有注释3的Ajax请求有问题。

//this is request to unread message

1 个答案:

答案 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属性后,未读消息的数量就会增加。