为什么我的ajax让我刷新我的页面看内容?

时间:2017-04-29 00:10:18

标签: javascript jquery ajax

我想当我的ajax检测到数据库中的更改时自动在html中显示内容而不刷新,但它什么都不做。我必须刷新页面,我该如何解决?我正在尝试进行ajax长轮询

$(function(doc, win, $) {
    var has_focus = true;
    var notification = win.Notification || win.mozNotification || win.webkitNotification;
    var $badge = $("#notifications-badge");
    var $list = $("#notifications-list");
    var $button = $("#notifications-button");
    URL_GET_NOTIFICATION = BASE_URL + 'notify/pusher';
    URL_GET_NOTIFICATION_UPDATE = BASE_URL + 'notify/update';

    if ('undefined' === typeof notification) {
        console.log('Web notification not supported');
    } else {
        notification.requestPermission(function(permission) {});
    }

    function check_notifications(timestamp) {
        $.ajax({
            type: 'GET',
            url: URL_GET_NOTIFICATION,
            data: { timestamp : timestamp },
            dataType: 'json',
            async: true,
            success: function (data) {
                for (var i in data.notifications) {
                    notify(data.notifications[i].message, data.notifications[i].type, data.notifications[i].timestamp);
                }
                check_notifications(data.timestamp);
            }
        });
    }

    function notify(message, type, created_at) {
        var type_txt = 'info';
        var url = '#';
        var icon = 'info-circle';

        if (type == 0) {
            type_txt = 'success';
            icon = 'check';
        } else if (type == 1) {
            type_txt = 'info';
            icon = 'exclamation';
        } else if (type == 2) {
            type_txt = 'warning';
            icon = 'exclamation-triangle';
        } else if (type == 3 || type == 4) {
            type_txt = 'danger';
            icon = 'fire';
        }

        $badge.show();
        $badge.text(parseInt($badge.text()) + 1);

        $list.find(".item").eq(13).nextAll(".item").remove();
        var item = '<li class="item text-' + type_txt + '"><a href="' + url + '"><span class="text-' + type_txt + '">' +
            '<i class="fa fa-' + icon + ' fa-fw"></i> ' + message.substr(0, 22) + '</span>' +
            '<span class="pull-right text-muted small" data-time="' + created_at + '">X</span></a></li>' +
            '<li class="item divider"></li>';
        $list.prepend(item);

        $('.dropdown.open .dropdown-toggle').dropdown('toggle');

        return true;
    }

    $(win).on("blur", function () {
        has_focus = false;
    });

    $(win).on("focus", function () {
        has_focus = true;
    });

    $button.on("click", function () {
        $badge.fadeOut(300, function () {
            $badge.text(0);
        });

        $list.find("span[data-time]").each(function (index) {
            var $this = $(this);
            $this.text(moment.unix($this.data('time')).fromNow());
        });
    });

    check_notifications();
}(document, window, jQuery));

0 个答案:

没有答案