当数据库中的特定数据发生更改时,使用 php 显示通知
show notification with php when a specific data is changed in a database
我想通知某个人我的数据库中 table 中可用的职位数量。在 table 中,我有一个包含 8 个工作的列表,它们都有自己的工作能力。我用 PHP 查询和 SELECT COUNT(*) AS jobs...
完成了计数,并创建了这个 ajax 脚本,它显示了一个间隔的计数。
$(document).ready(function() {
$.ajaxSetup({ cache: false });
setInterval(function() {
$('#divToRefresh').load('notification.php'); //this contains the query
}, 30000);
});
但是,我不确定如何做到这一点,所以当用户看到通知警报时,他们会关闭它并且在有新的可用工作之前它不会再次出现。
我也找不到关于好的 google 的任何内容。
那么您需要进行 AJAX
调用,它的响应应该是 number of new notifications
。现在检查是否 num>0
然后只做 $("#notification").fadeIn();
默认情况下隐藏 div 有文本 你有新通知(或其他) 和关闭按钮。
$(doument).ready(function(){
setInterval(function(){
$.get("notification.php", function(data){
if(data>0)
{
$("#div").fadeIn();
}
});
},1000);
});
一旦用户关闭它,您可以在用户的浏览器中创建一个 cookie,然后检查是否设置了 cookie 不要发出 ajax 请求,这是您不必更新数据库,每个用户都会能够看到通知。
您的 jQuery 功能是 运行 每 30 秒从服务器轮询一次数据。 notification.php
return 预渲染 HTML 包含(我假设除其他事项外)可用的工作数量。
检查可用职位的数量并根据此显示通知:
setInterval(function() {
var oldNumberOfJobs = newNumberOfJobs = 0;
$('#divToRefresh').load('notification.php'); //this contains the query
newNumberOfJobs = $('#divWithJobsCount').text;
if (newNumberOfJobs > oldNumberOfJobs) {
// show notification to the user
}
oldNumberOfJobs = newNumberOfJobs;
}, 30000);
更具体地说(showing/hiding 通知),我需要查看你的 HTML。
这个解决方案感觉很笨重。整个预渲染 HTML 正在一次又一次地重新加载。更好的方法是仅 return 可用的工作数量,并且仅使用 jQuery.
更新该数量
此外,return 最新的 job_id
以及可用的职位总数可能是个好主意。这样,您可以检查前端已存储的最新 job_id
是否与新收到的 job_id
匹配。只有当它们不匹配时,您才会更新计数器并显示新通知。
更新
Here is a jsfiddle.js 涵盖了您的案例。作业计数器是用当前分钟数模拟的。该函数每 15 秒检查一次分钟数是否已更改。一旦发生,就会显示警报通知(但只有在旧通知已关闭时才会显示)。
setInterval
in jsfiddle is written using a mock object so that it is testable in the browser without AJAX requests. In your code use the following form:
setInterval(function() {
$.get('notification.php', checkJobsCounter); // returns jobs count in plain text
}, 30000);
我想通知某个人我的数据库中 table 中可用的职位数量。在 table 中,我有一个包含 8 个工作的列表,它们都有自己的工作能力。我用 PHP 查询和 SELECT COUNT(*) AS jobs...
完成了计数,并创建了这个 ajax 脚本,它显示了一个间隔的计数。
$(document).ready(function() {
$.ajaxSetup({ cache: false });
setInterval(function() {
$('#divToRefresh').load('notification.php'); //this contains the query
}, 30000);
});
但是,我不确定如何做到这一点,所以当用户看到通知警报时,他们会关闭它并且在有新的可用工作之前它不会再次出现。
我也找不到关于好的 google 的任何内容。
那么您需要进行 AJAX
调用,它的响应应该是 number of new notifications
。现在检查是否 num>0
然后只做 $("#notification").fadeIn();
默认情况下隐藏 div 有文本 你有新通知(或其他) 和关闭按钮。
$(doument).ready(function(){
setInterval(function(){
$.get("notification.php", function(data){
if(data>0)
{
$("#div").fadeIn();
}
});
},1000);
});
一旦用户关闭它,您可以在用户的浏览器中创建一个 cookie,然后检查是否设置了 cookie 不要发出 ajax 请求,这是您不必更新数据库,每个用户都会能够看到通知。
您的 jQuery 功能是 运行 每 30 秒从服务器轮询一次数据。 notification.php
return 预渲染 HTML 包含(我假设除其他事项外)可用的工作数量。
检查可用职位的数量并根据此显示通知:
setInterval(function() {
var oldNumberOfJobs = newNumberOfJobs = 0;
$('#divToRefresh').load('notification.php'); //this contains the query
newNumberOfJobs = $('#divWithJobsCount').text;
if (newNumberOfJobs > oldNumberOfJobs) {
// show notification to the user
}
oldNumberOfJobs = newNumberOfJobs;
}, 30000);
更具体地说(showing/hiding 通知),我需要查看你的 HTML。
这个解决方案感觉很笨重。整个预渲染 HTML 正在一次又一次地重新加载。更好的方法是仅 return 可用的工作数量,并且仅使用 jQuery.
更新该数量此外,return 最新的 job_id
以及可用的职位总数可能是个好主意。这样,您可以检查前端已存储的最新 job_id
是否与新收到的 job_id
匹配。只有当它们不匹配时,您才会更新计数器并显示新通知。
更新
Here is a jsfiddle.js 涵盖了您的案例。作业计数器是用当前分钟数模拟的。该函数每 15 秒检查一次分钟数是否已更改。一旦发生,就会显示警报通知(但只有在旧通知已关闭时才会显示)。
setInterval
in jsfiddle is written using a mock object so that it is testable in the browser without AJAX requests. In your code use the following form:setInterval(function() { $.get('notification.php', checkJobsCounter); // returns jobs count in plain text }, 30000);