我正在尝试使用jquery / Ajax为我正在开发的社交网络网站构建一个实时通知系统(使用Symfony2)。我成功地使通知系统工作,但问题是它无法正常工作。解释如下:
我下载了wdCalendar日历(来自此链接:http://www.webappers.com/2010/06/08/wdcalendar-jquery-based-google-calendar-clone/,您可以查看此链接以查看演示:http://www.web-delicious.com/jquery-plugins-demo/wdCalendar/sample.php)并将其集成到Symfony2上。然后我创建了三个文件:mapage.html,moslem.php和moslem1.php。每个文件的代码如下所示:
mapage.html的代码:
<html>
<head>
</head>
<body>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
setTimeout( test, 1000);
});
function test() {
var start = new Date().getMilliseconds();
$.ajax({
url: 'moslem.php',
type: 'POST',
success: function(data) {
var max;
max = data;
function test1() {
$.ajax({
url: 'moslem1.php',
type: 'POST',
dataType: 'JSON',
success: function(data1) {
if(data1.id>max)
{
document.write("an event was added with the id: "+data1.id+" and with the subject: "+data1.subject+"<br>");
}
}
});
}
var end = new Date().getMilliseconds();
var time = end - start;
var time1 = 1000 - time;
setTimeout( test1, time1);
}
});
setTimeout( test, 1000);
}
</script>
</body>
moslem.php的代码:
<?php
$con=mysqli_connect("localhost","root","","test");
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$result = mysqli_query($con,"SELECT * FROM jqcalendar ORDER BY id DESC LIMIT 0, 1");
$num_rows = mysqli_num_rows($result);
if($num_rows!=0){
while($row = mysqli_fetch_array($result)) {
$max=$row['Id'];
}
echo $max;
}
mysqli_close($con);
?>
moslem1.php的代码:
<?php
$con=mysqli_connect("localhost","root","","test");
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$result = mysqli_query($con,"SELECT * FROM jqcalendar ORDER BY id DESC LIMIT 0, 1");
while($row = mysqli_fetch_array($result)) {
$notification = array('id'=>$row['Id'],'subject'=>$row['Subject'],'location'=>$row['Location'],'description'=>$row['Description'],'starttime'=>$row['StartTime'],'endtime'=>$row['EndTime']);
}
echo json_encode($notification);
mysqli_close($con);
?>
在我工作的数据库中有一个名为“jqcalendar”的表,其结构如下(字段名在左侧,字段类型在右侧):
Id:int(11)
主题:varchar(1000)
位置:varchar(200)
描述:varchar(255)
StartTime:datetime
结束时间:日期时间
IsAllDayEvent:smallint(6)
颜色:varchar(200)
RecurringRule:varchar(500)
上面的字段“Id”是表“jqcalendar”的主键,它也是自动递增的。那么,关于我正在尝试构建的通知系统的概念如下:当在日历上添加事件时,由于jquery / Ajax请求,将检测在表“jqcalendar”中插入新行(在“jqcalendar”表上)每隔一秒发生一次,然后一些字段的内容(“Id”和“Subject”)将显示在屏幕上(文件mapage.html是显示它们的文件)作为通知。问题是,当我添加ID为“10”的事件时,通知将不会显示。顺便说一下,我在日历中添加了20个事件,这是我在屏幕上获得的通知的输出:
添加了一个id为1的事件,主题为:a
添加了一个id为2的事件,主题为:z
添加了一个id为3的事件,主题为:e
添加了一个id为4的事件,主题为:r
添加了一个id为5的事件,主题为:t
添加了一个id为6的事件,主题为:y
添加了一个id为7的事件,主题为:u
添加了一个id为8的事件,主题为:i
添加了一个id为9的事件,主题为:o
添加了一个id为11的事件,主题为:^^
添加了一个id为12的事件,主题为:q
添加了一个id为13的事件,主题为:s
添加了一个id为14的事件,主题为:d
添加了一个id为15的事件,主题为:f
添加了一个id为16的事件,主题为:g
添加了一个id为17的事件,主题为:h
添加了一个id为18的事件,主题为:j
添加了一个id为19的事件,主题为:k
添加了一个id为20的事件,主题为:l
正如您在上面清楚地注意到的那样,有一个错过的通知,即id为“10”的事件之一。只关注以下两行:
添加了一个id为9的事件,主题为:o
添加了一个id为11的事件,主题为:^^
所以我的问题是如何让id = 10的事件通知显示为其他通知。我真的很想知道这里有什么问题以及为什么无法显示id = 10的事件的通知!我试图找到一个解决方案很长一段时间但没有任何改变。有没有人有任何想法??
提前致谢。