【问题标题】:DIV stops refreshing when new database entry is made当创建新的数据库条目时,DIV 停止刷新
【发布时间】:2017-12-10 01:41:59
【问题描述】:

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

所以这是一个非常烦人的问题,它破坏了我基于 Web 的应用程序的全部目的。我试图对其进行故障排除,但无法弄清楚它为什么拒绝工作。我唯一的猜测是,当刷新发生时 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>

【问题讨论】:

    标签: php jquery mysql


    【解决方案1】:

    这可能是由引发异常的加载方法引起的。您应该添加一些错误处理来帮助调试问题。

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

    $('#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);
        }
    );
    

    【讨论】:

    • 刚做测试,报错到事件所在的div。 AKA,如果分配了一个单元并且它处于活动状态,那么 ACTIVE 错误和 PENDING 就可以了。如果没有分配单位,则相反。如果没有事件,两者都有效。如果有一个分配了单元的事件和没有分配单元的第二个事件,则活动错误但未决工作正常。
    • 我通常选择使用 AJAX 而不是 load 方法,但是,此时您正在为每个 load 方法调用 setTimeout,可能值得将它们删除并在refreshActive 函数结束。
    • 我犯了一个愚蠢的问题。我刚刚意识到有一个 php“error_log”,它说我试图在这些页面中使用的函数没有定义。这是一个仅在事件处于活动状态或未决时调用的函数。因此问题!我正在更新问题,但问题是,一旦页面加载并且正在调用自动​​刷新,原始页面(index.php)中的颜色确定函数是未定义的。
    • 已解决。我在 master database.php 文件中添加了一些“function_exists()”检查,它现在可以完美运行。谢谢你的橡皮擦!
    猜你喜欢
    • 2011-03-30
    • 1970-01-01
    • 1970-01-01
    • 2013-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多