进行新数据库输入时,DIV会停止刷新

时间:2017-12-09 17:06:24

标签: php jquery mysql

(UPDATE) 所以问题不是数据库条目或自动刷新(排序)。 我已经将问题缩小到我的index.php中的函数,该函数确定要显示的条目的颜色。当自动刷新重新加载包含的PHP页面时,此函数似乎未定义。

所以这是一个非常烦人的问题,打破了我基于网络的应用程序的整个目的。我试图解决它,无法弄清楚为什么它拒绝工作。我唯一的猜测是,当刷新发生时,PHP / MySQL调用也不会被重新运行,但这不可能是真的,因为当我触发下面列出的事件#3时,它就会消失。当条目存在时,它不会更新。

Div ID“unitsAvail”工作正常,即使创建/删除了新条目。

1)当没有条目时,刷新完全正常。 2)在创建新数据库条目时停止刷新。 2b)刷新页面不能修复自动刷新。 3)删除该条目时重新开始刷新,无论页面是否重新加载。

注意 :刷新的php页面包含一个HTML表格和用于调用MySQL查询的PHP代码。它们不包含任何div或任何其他冲突的东西。

注意2 :我为每个div添加了时间戳回声,并且当创建新数据库条目时,活动/挂起确实停止了自动刷新。可用单位继续刷新完美,时间戳更新。

(我认为将这些PHP页面放在这个页面中可能会更好,而是刷新div内容。如果这是一个更好的方法,我将如何更改自动刷新?如何更改? .load()到?)

    <script src="java/jquery.js"></script>
    <script type="text/javascript">

    $(document).ready(function() {
        refreshActive();
    });

    function refreshActive() {
        $('#incActive').load('active.php', function() {
            setTimeout(refreshActive, 5000);
        });
        $('#incPending').load('pending.php', function() {
            setTimeout(refreshPending, 5000);
        });
        $('#unitsAvail').load('units.php', function() {
            setTimeout(refreshUnits, 5000);
        });
    }

    </script>
<body>
        <div id="fixed">

            <? include ("topmenu.php"); ?>

            <div id="backpanel">   

                <div id="incActive">
                    <?
                    include "active.php";
                    ?>
                </div>

                <div id="incPending">
                    <?
                    include "pending.php";
                    ?>
                </div>

                <div id="unitsAvail">
                    <?
                    include "units.php";
                    ?>
                </div>

            </div>

        </div>

</body>

1 个答案:

答案 0 :(得分:0)

这可能是由于抛出异常的load方法引起的。您应该添加一些错误处理以帮助调试问题。

尝试使用它来捕获任何错误:

$('#incActive').load('active.php', function( response, status, xhr ) {
    if ( status == "error" ) {
        var msg = "Sorry but there was an error: ";
        $( "#error" ).html( msg + xhr.status + " " + xhr.statusText );
    }
    else{
        setTimeout(refreshActive, 5000);
    }
);