FullCalendar,JSON 数组为空但正在处理 PHP 文件

FullCalendar, JSON array empty but working on PHP file

我正在使用 MySQL 数据库配置 FullCalendar,使用 PHP 进行处理,return 使用 JSON。

以下文件内容,但在阅读之前:db-connect.php 成功输出 JSON 我已在 JSONLint 上验证。

[{"title":"Test new calendar","start":"2015-07-21","end":"2015-07-22"}]

get-events.php 成功 'reading' db-connect.php 因为我的前端视图上的 "php/get-events.php must be running." 错误消息已经消失(例如显示它无法确定db-connect.php在目录中,或文件名拼写错误等)。

然而,当我通过 params 传递查询或检查 Firebug 控制台时,JSON 数组为空。

/cal/demos/php/get-events.php?start=2015-07-01&end=2015-07-31

returns [] 而我的测试日历条目确实符合这些参数。

我确信这是我的 db-connect.php 错误,但我正在摸不着头脑。相对新手,所以我相信这很明显!

db-connect.php

<?php
    $db = mysql_connect("localhost:3306","root","");
    if (!$db) {
        die('Could not connect to db: ' . mysql_error());
    }

    mysql_select_db("test",$db);

    $result = mysql_query("select * from cal", $db);  

    $json_response = array();

    while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
        $row_array['id'] = $row['id'];
        $row_array['title'] = $row['title'];
        $row_array['start'] = $row['start'];
        $row_array['end'] = $row['end'];

        array_push($json_response,$row_array);
    }
    echo json_encode($json_response);

    mysql_close($db);
 ?>

get-events.php

<?php



// Require our Event class and datetime utilities
require dirname(__FILE__) . '/utils.php';


if (!isset($_GET['start']) || !isset($_GET['end'])) {
    die("Please provide a date range.");
}


$range_start = parseDateTime($_GET['start']);
$range_end = parseDateTime($_GET['end']);


$timezone = null;
if (isset($_GET['timezone'])) {
    $timezone = new DateTimeZone($_GET['timezone']);
}

$json = file_get_contents(dirname(__FILE__) . '/db-connect.php');
$input_arrays = json_decode($json, true);

$output_arrays = array();

if (is_array($input_arrays) || is_object($input_arrays))
{
foreach ($input_arrays as $array) {

    $event = new Event($array, $timezone);

    if ($event->isWithinDayRange($range_start, $range_end)) {
        $output_arrays[] = $event->toArray();
    }
}
}

echo json_encode($output_arrays);

file_get_contents 不解析 php 文件。在这种情况下,它将输出程序代码。将此函数添加到您的 get-events.php

function loadPhpFile($file) {
    ob_start(); 
    include $file;
    $content = ob_get_contents();
    ob_end_clean();
    return $content;
}

然后替换

$json = file_get_contents(dirname(__FILE__) . '/db-connect.php');

$json = loadPhpFile(dirname(__FILE__) . '/db-connect.php');

提示:请使用对象 (OOP) 和 mysqli。 PHP Mysqli