当天系统的消息

时间:2016-09-19 19:01:36

标签: javascript php jquery html twitter-bootstrap

我已经通过jquery在我的页脚上加载了一些代码(因此访问的每个页面都在其页面上有代码)

此代码用于检查数据库,如果有任何响应,则将引导模式发送到客户端。发送模式时,将从数据库中删除该行。发生更新时,每个用户在数据库中都有自己的行。

每10秒重新加载一次页脚代码,以检查相对表是否有任何更新。

这样做,除非删除行后,PHP似乎在我不应该执行的if块中执行代码,因为它导致模式关闭或堆积在彼此之上,迫使客户端重新加载页面以继续浏览。

因此,假设客户端加载索引页面,并且它们有等待它们的待处理消息。 发送模式以供用户手动关闭。如果用户等待超过10秒,模式将自行关闭,但背景将保留,使得用户无法点击任何内容,直到重新加载页面。如果用户再等10秒钟,则会添加另一个背景幕,使屏幕变暗。这种情况一直持续到屏幕完全变黑或客户端重新加载页面为止。

如果块基本上声明它不应该执行,则打开模态的代码在2中。

这是我的重新加载代码:

<?

    include("dbConnect.php");

    $sql = "SELECT DISTINCT Message,uniqueID from sendMessage WHERE UserID='".$_GET['userID']."';";

    $ret = $db->query($sql);

    $loop = 0;

    $messages = array();

    if (session_status() == PHP_SESSION_NONE) {
        session_start();
    }

    while($row = $ret->fetchArray(SQLITE3_ASSOC) ){

        $loop++;

        array_push($messages,array("uniqueID" => $row['uniqueID'], "Message" => $row['Message']));

    }


    if($loop != 0) {
        if(!empty($messages)) {

            ?>

            <script type="text/javascript">
                $(document).ready(function () {
                    $('.modal').modal('hide');
                    $('#memberModal').modal('show');
                });
            </script>

            <!-- Modal -->
            <div class="modal fade" id="memberModal" tabindex="-1" role="dialog" aria-labelledby="memberModalLabel">
                <div class="modal-dialog" role="document">
                    <div class="modal-content">
                        <div class="modal-header">
                            <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
                            <h4 class="modal-title" id="memberModalLabel">Message from Administrators</h4>
                        </div>
                        <div class="modal-body">
                            <?
                            foreach($messages as $v) {
                                echo $v['Message'];
                                if($loop > 1) {
                                    echo "<br><br>";
                                }
                            }
                            ?>
                        </div>
                        <div class="modal-footer">
                            <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
                        </div>
                    </div>
                </div>
            </div>
            <?

            foreach($messages as $v) {
                    $sql2 = "DELETE from sendMessage where uniqueID='".$v['uniqueID']."';";
                    $ret2 = $db->exec($sql2);
            }


        }
    }

    ?>

据我所知,所有进口都是正确的(否则模态根本不起作用,对吗?)

这是我的页脚中的jquery:

            <div id="links"></div>
            <script>
                function loadlink(){
                    $('#links').load('templates/sendMessage.php?userID=<?=$userInfo['uniqueid'];?>',function () {});
                }

                loadlink(); // This will run on page load
                setInterval(function(){
                    loadlink() // this will run after every 5 seconds
                }, 10000);
            </script>

- 编辑 -

我怀疑我的问题是因为在模态打开时再次重新加载div,因此打破了它,因为它正在删除模态所在的代码。我不确定如何解决这个问题。

1 个答案:

答案 0 :(得分:0)

代码不完整,但从我可以告诉你的ajax脚本应该只发送模态的内容,而不是整个模态,append()它(如果你想要的话,使用html()删除以前的消息)<div class="modal-body">然后显示模态。现在您将整个模态代码插入模态中并获得babushka效果。

- 编辑 -

在你的php脚本中,只返回消息,而不是模态html:

[...]
if($loop != 0) {
    if(!empty($messages)) {
        foreach($messages as $v) {
            echo $v['Message'];
            if($loop > 1) {
                echo "<br><br>";
            }
        }
[...]

页脚中的

   <!-- Modal -->
        <div class="modal fade" id="memberModal" tabindex="-1" role="dialog" aria-labelledby="memberModalLabel">
            <div class="modal-dialog" role="document">
                <div class="modal-content">
                    <div class="modal-header">
                        <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
                        <h4 class="modal-title" id="memberModalLabel">Message from Administrators</h4>
                    </div>
                    <div class="modal-body">
                       // mesages will be inserted here
                    </div>
                    <div class="modal-footer">
                        <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
                    </div>
                </div>
            </div>
        </div>

        <script>
            function loadlink(){
                $('.modal-body').load('templates/sendMessage.php?userID=<?=$userInfo['uniqueid'];?>',function () {
                     // maybe add a condition to see if nothing is returned
                     // and not show it
                     $('#memberModal').modal('show');
                });
            }

            loadlink(); // This will run on page load
            setInterval(function(){
                loadlink() // this will run after every 5 seconds
            }, 10000);
        </script>