实时通知系统(使用jquery / Ajax创建)无法正常工作

时间:2014-05-22 09:43:55

标签: jquery ajax notifications system real-time

我正在尝试使用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的事件的通知!我试图找到一个解决方案很长一段时间但没有任何改变。有没有人有任何想法??

提前致谢。

0 个答案:

没有答案