【问题标题】:Chrome Notifications Using AJAX使用 AJAX 的 Chrome 通知
【发布时间】:2016-11-06 17:06:09
【问题描述】:

在页面加载时,我请求用户允许这样的通知:

document.addEventListener('DOMContentLoaded', function () {
    if (Notification.permission !== "granted")
        Notification.requestPermission();
});

然后我编写了一个向用户发送通知的函数,效果很好:

function push(title, message, location) {
    if(!Notification) { return; }
    if (Notification.permission !== "granted") { return; }
    var notification = new Notification(title, {
        icon: 'http://cdn.sstatic.net/stackexchange/img/logos/so/so-icon.png',
        body: message,
    });
    notification.onclick = function () {
      window.open(location);      
    };
}

这样使用:

push('Test', 'Test Message', 'http://example.com');

然后我有一个 PHP 脚本,暂时它是静态的,并返回相同的东西以供很快进行数据库驱动的测试。

session_start();
header('Content-Type: application/javascript');
if(!isset($_SESSION['notify'])) {
    echo json_encode(array(
        'Title' => 'Welcome to our Site',
        'Message' => 'You are current recieving notifications.',
        'Location' => 'http://example.com/',
        'State' => true
    ),true);
    $_SESSION['notify'] = true;
} else {
    echo json_encode(array(
        'State' => false
    ), true);
}

直接访问页面时也可以正常工作。该问题出现在我的 AJAX 请求中:

setInterval(function() {
    $(document).ready(function() {
        $.post('../notify/get_notify.php').done(function(response) {
            if(response.State) {
                push(response.Title, response.Message, response.Location);
            }
            console.log(response);
        });
    });
}, 5000);

问题来了!当我检查网络时,每 5 秒就会发出一个请求并且响应会返回。但是,控制台中没有记录任何内容,也没有执行 push() 方法。

任何帮助将不胜感激。

【问题讨论】:

    标签: javascript php jquery google-chrome


    【解决方案1】:

    我发现了问题,由于$.post() 的范围,我无法检索任何内容,因此我返回了这样的响应值:

    setInterval(function() {
        $(document).ready(function() {
            response = $.post('../notify/get_notify.php').done(function(response) {
                return response;
            });
            if(response.State) {
                push(response.Title, response.Message, response.Location);
            }
        });
    }, 5000);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-03-24
      • 2016-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多