我正在研究用于检查数据库更新的Javascript函数,第一部分检查更新,正在工作(javascript将一个帖子请求发送到一个php文件,然后显示结果,如果有&#39 ; s any)。
当事情发生时,用户会在nav-bar
中收到通知。
问题:如果用户检查新闻,那么即使用户已经看到新闻,导航栏也会显示相同的通知。
相反,JS
应该只搜索新结果。
这方面的正确方法是什么?
HTML:
<li><a href="home?show=my_turn">My turn <span id="my_turn_news" class="badge" style="display: none;">0</span></a>/li>
腓:
if ($_POST['check'] == 'my_turn') {
$my_turn = sqlSelect("SELECT DISTINCT(story_writers.story_id) FROM `story_writers` INNER JOIN story WHERE story_writers.user_id = {$_POST['user_id']} AND story_writers.on_turn = 1 AND story.total_rows < story.max_rows;");
if (count($my_turn) > 0)
echo count($my_turn);
}
使用Javascript:
var xmlhttp = new XMLHttpRequest();
var overview_news = document.getElementById('overview_news');
var my_turn_news = document.getElementById('my_turn_news');
setInterval(function checkMyTurn() {
xmlhttp.onreadystatechange = function() {
if (xmlhttp.status == 200 && xmlhttp.readyState == 4) {
if (xmlhttp.responseText > 0) {
if (overview_news.style.display == 'none' && my_turn_news.style.display == 'none') {
overview_news.style.display = 'inline';
my_turn_news.style.display = 'inline';
}
my_turn_news.innerHTML = xmlhttp.responseText;
}
}
}
xmlhttp.open('POST', 'functions/search.php', true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send('check=my_turn&user_id=<?=$_SESSION['user_id']; ?>');
}, 3000);