【发布时间】:2016-07-07 16:06:55
【问题描述】:
从这里继续提问How can we show recent notifications in jQuery/php/mySQL?
如下面的答案所述。我在 DB 中添加了一个名为 see 的新列。默认值为 0。如果我理解正确,那么我需要在显示通知后立即将 seen=0 更改为 1,这样它就不会再循环并向我显示无限数量的相同通知。
这就是我目前所拥有的:
function fetch_notification(){
setInterval(function(){
//GET ALL DATA WHERE SEEN=0
$.ajax({
url: "fetchResults.php",
success: function(data){
$.each(data.vormid, function(i, vormid) {
$("#noti-box").append('<div class="alert alert-info "><button data-dismiss="alert" class="close close-sm" type="button"><i class="fa fa-times"></i></button>New form filled out by Dr. '+data.vormid[i].arsti_eesnimi+' '+data.vormid[i].arsti_perekonnanimi+'</div>');
});
update_notification();
}, dataType: "json"});
}, 5000);
}
fetch_notification();
//UPDATE SEEN=0 to 1
function update_notification(){
console.log("updating");
}
我的两个 PHP 文件是 fetchResults.php 和 updateResults.php
fetchResults.php:
<?php
header('Content-Type: application/json');
include_once '../dbconfig.php';
$stmt4 = $DB_con->prepare("SELECT * FROM ravim WHERE seen =0 ORDER BY date_created DESC");
$stmt4->execute();
$vormid = $stmt4->fetchAll(PDO::FETCH_ASSOC);
echo json_encode(array("vormid" => $vormid));
?>
updateResults.php:
<?php
header('Content-Type: application/json');
include_once '../dbconfig.php';
$ravim_id = $_POST['ravim_id'] ;
$stmt4 = $DB_con->prepare("UPDATE ravim SET seen=1 WHERE ravim_id=:ravim_id");
$stmt4->execute();
?>
编辑 所以我设法只显示一次通知。我的问题现在伴随着音频,一般来说,如果我写的代码是“好的”或者我应该改变什么。 音频:我想在每次收到通知时播放声音,但一开始就一直播放一次。我尝试添加一个循环计数器,并检查对象是否为空,但它不起作用。关于如何处理音频有什么建议或好的做法吗?
代码:
$.ajaxSetup ({
cache: false
});
var loopLimit = 1;
var loopCounter = 0;
setInterval(function(){
$.getJSON('fetchResults.php', function(data) {
$("#loadingDiv").show();
$('#noti-box').empty();
$("#notificationTitle").empty();
if(jQuery.isEmptyObject(data)){
console.log("there is no data");
}else{
console.log(data);
if (loopCounter < loopLimit){
var sound = $("#notification")[0];
sound.currentTime = 0;
sound.load();
sound.play();
loopCounter++;
}
$.each(data.vormid, function(i, vormid) {
$("#noti-box").append('<div class="alert alert-info"><button id='+data.vormid[i].ravim_id+' data-dismiss="alert" class="close close-sm" type="button"><i class="fa fa-times"></i></button>New form filled out by Dr. <b>'+data.vormid[i].arsti_eesnimi+' '+data.vormid[i].arsti_perekonnanimi+' </b> at '+data.vormid[i].date_created+'</div>');
var id= $(".alert.alert-info").val();
$("#notificationTitle").append('<li style="font-size: 14px; padding: 0; margin: 0 0 10px 10px; color: #666666;" >New form filled out by Dr. '+data.vormid[i].arsti_eesnimi+' '+data.vormid[i].arsti_perekonnanimi+'</li>');
$(".close").on('click', function () {
var ravim_id = $(this).attr('id');
$.ajax({
type: "POST",
url:'updateResults.php',
data:"ravim_id=" + ravim_id,
success:function(data){
console.log("success");
},error: function(data){
console.log("not saved");
}
});
});
});
}
$("#loadingDiv").fadeOut("slow");
});
}, 5000);
【问题讨论】: