【问题标题】:Fullcalendar used twice, event display only works onceFullcalendar 使用了两次,事件显示只工作一次
【发布时间】:2015-07-12 15:40:48
【问题描述】:

注意:关于 Adam Shaw 的 FullCalendar 插件有很多问题;我无法使用现有讨论解决此问题,但如果存在,请指出相关主题。

使用 PHP/MySQL


我想在两种情况下显示日历:

  1. 当用户查看自己的信息时
  2. 当用户搜索其他用户的信息时

案例 1 工作正常。案例 2 显示日历但不显示事件信息,尽管使用了我认为相同的逻辑。

每个案例都有一个数据库连接/查询文件,该文件以一个回显的 JSON 数组结尾。这些文件都可以工作 - 我从这两个文件中得到的输出复制如下:

案例一:

[{"title":"100","start":"2015-04-01"},{"title":"200","start":"2015-04-02"},{"title":"300","start":"2015-04-03"},{"title":"-2","start":"2014-04-04"},{"title":"-3","start":"2015-04-05"},{"title":"-1","start":"2015-04-04"},{"title":"-1","start":"2015-04-06"},{"title":"-300","start":"2015-04-07"},{"title":"-10","start":"2015-04-12"},{"title":"-10","start":"2015-04-13"},{"title":"-10","start":"2015-04-14"}]

案例 2:

[{"title":"800","start":"2015-04-08"},{"title":"900","start":"2015-04-09"},{"title":"1000","start":"2015-04-10"},{"title":"5000","start":"2015-04-15"}]

每个案例也有自己的配置文件:

案例 1 (目前正在工作)

    <!--FullCalendar things -->
    <link rel='stylesheet' href='fullcalendar/fullcalendar.css' />
    <link rel='stylesheet' href='fullcalendar/fullcalendar.print.css' media="print" />
    <script src='fullcalendar/lib/moment.min.js'></script>
    <script src='fullcalendar/lib/jquery.min.js'></script>
    <script src='fullcalendar/fullcalendar.js'></script>


    <script> 
    $(document).ready(function() {


            $('#calendar').fullCalendar({

        weekNumbers: true,
        allDayDefault: true,
        editable: true,
        eventLimit: true, // allow "more" link when too many events
        events: 'db_connect.php'


            });
        }); 
    </script>

案例 2:

    <!--FullCalendar things -->
    <link rel='stylesheet' href='fullcalendar/fullcalendar.css' />
    <link rel='stylesheet' href='fullcalendar/fullcalendar.print.css' media="print" />
    <script src='fullcalendar/lib/moment.min.js'></script>
    <script src='fullcalendar/lib/jquery.min.js'></script>
    <script src='fullcalendar/fullcalendar.js'></script>

    <script> 
    $(document).ready(function() {


            $('#search_calendar').fullCalendar({

        weekNumbers: true,
        allDayDefault: true,
        editable: true,
        eventLimit: true, // allow "more" link when too many events
        events: 'search_results_db_connect.php'

            });
        }); 
    </script>

同样,在案例 2 中,会显示日历本身,但不会显示事件。如果我从案例 2 中删除 'weeknumbers' 选项,则 weeknumbers 会从正确的页面上消失,因此一切似乎都可以正常通信。我已经对拼写和文件结构进行了四次检查,但我很困惑。非常感谢任何帮助 - 谢谢!

编辑:我还应该注意,当我将案例 2 JSON 数组直接复制到配置文件中时,日历可以正常工作。即:

    <script> 
    $(document).ready(function() {


            $('#search_calendar').fullCalendar({

        weekNumbers: true,
        allDayDefault: true,
        editable: true,
        eventLimit: true, // allow "more" link when too many events
        events: //'search_results_db_connect.php'
                [{"title":"800","start":"2015-04-08"},{"title":"900","start":"2015-04-09"},{"title":"1000","start":"2015-04-10"},{"title":"5000","start":"2015-04-15"}]
            });
        }); 
    </script>

编辑 2:search_results_db_connect.php(此时逻辑并未涵盖所有情况。)

    <?php
            //Creates variable $step_connect = mysqli_connect($servername, $username, $password, $database);
            include('/includes/step_dbc.php');

            // Check connection
            if (!$step_connect) {
                die("Connection failed: " . mysqli_connect_error());
            }

            if (isset($_GET['query'])) {
                $search_id = trim(htmlspecialchars($_GET['query']));

            $q_user = "SELECT * FROM users WHERE first_name LIKE '%$search_id%'
                OR last_name LIKE '%$search_id%' OR email LIKE '%$search_id%'";
            $r_user = mysqli_query($step_connect, $q_user);

            }

            if (mysqli_num_rows($r_user) == 1) {

                    $row = mysqli_fetch_assoc($r_user);
                    $q_user_id = $row['id'];

                    $q_steps = "SELECT steps, `date` FROM steps WHERE user_id = '$q_user_id'";
                    $r_steps = mysqli_query($step_connect, $q_steps);

                    if (mysqli_num_rows($r_steps) >0) {
                                while ($row = mysqli_fetch_assoc($r_steps)) {
                                        $step_array[] = array(
                                        'title' => $row['steps'],
                                        'start' => $row['date'],
                                    );
                                } 
                            } else {
                                echo "No recorded steps";
                            }
                        echo json_encode($step_array);
                    }

            ?>

上面的代码输出上面显示的 Case 2 JSON。

【问题讨论】:

    标签: php jquery mysql events fullcalendar


    【解决方案1】:

    您发布的代码似乎没有任何问题。我知道你说它有效,但你可能想发布search_results_db_connect.php 代码。

    最后,您可能需要对 JSON 数据的检索进行更多调试。首先,您可以包含一个错误回调,以查看 ajax 调用是否导致错误响应。

    $('#search_calendar').fullCalendar({
        weekNumbers: true,
        allDayDefault: true,
        editable: true,
        eventLimit: true, // allow "more" link when too many events
        events: {
            url: 'search_results_db_connect.php',
            error: function(jqXHR jqXHR, String textStatus, String errorThrown) {
                alert('Error: jqXHR.responseText: ' + jqXHR.responseText
                      + 'textStatus: ' + textStatus
                      + 'errorThrown: ' + errorThrown);
            }
        }
    });
    

    我认为您还可以添加一个success 回调来查看 JSON 是否真的如您所想的那样返回。

        events: {
            url: 'search_results_db_connect.php',
            error: function(jqXHR jqXHR, String textStatus, String errorThrown) {
                //...
            },
            success: function(result) {
                alert('type: ' + (typeof result) + 'result: ' + result);
            }
        }
    

    【讨论】:

    • 谢谢,约翰。我不是 ajax-savvy,但是在复制/粘贴你的添加之后没有错误消息。我将在顶部添加额外的代码。
    • @Oijara - 我又添加了一个调试建议。
    猜你喜欢
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-07
    • 2011-09-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多