gpt4 book ai didi

mysql - 如何在没有 URL 的情况下使用 JSON 编码数组?

转载 作者:行者123 更新时间:2023-11-29 14:48:46 26 4
gpt4 key购买 nike

您好,我正在使用 fullCalendar 1.5.1,并且我创建了一个 PHP 查询,它几乎返回我想在日历中使用的所有内容。这是一个集成系统,因此我必须切换到 _ASSOC 以便仅返回 MySQLi 关联数组:

<?php 
global $json_result;
global $myqueryresult;
$GLOBALS["ADODB_FETCH_MODE"] = ADODB_FETCH_ASSOC;
$myquery = "SELECT id, title, eventstart, eventend FROM View1";
$myqueryresult = $GLOBALS["conn"]->GetAll($myquery);
$json_result = json_encode($myqueryresult);
$GLOBALS["ADODB_FETCH_MODE"] = ADODB_FETCH_BOTH;
?>

...除非它不接受数据,因为键/值对中的键被引用(根据 JSON 标准,所以我读过)。

如果我只是输入生成的 MySQL 数组,Javascript 只会将数据显示为“数组”。如果我在数组上使用 json_encode() ,我会得到看起来像是正确的 JSON 对象,但由于键被引用,它无法与 fullCalendar 一起使用。

这是我的 fullcalendar jQuery:

$(document).ready(function() {                            
$('#calendar').fullCalendar({
height: 600,
firstDay: 6,
theme: true,
year: 2012,
month: 0,
date: 7,
minTime: 6,
maxTime: 23,
startParam: 'eventstart',
endParam: 'eventend',
defaultView: 'agendaWeek',
allDaySlot: false,
slotMinutes: 15,
events: <?php echo $json_result; ?>

// put your options and callbacks here
})
});

如果我使用 MySQL 数组作为 $json_result ,这里是生成的 HTML 源:

    $(document).ready(function() {                            
$('#calendar').fullCalendar({
<...snip...>
slotMinutes: 15,
events: Array
// put your options and callbacks here
})
});

这是我使用 json_encode($thesamearray) 的结果

    $(document).ready(function() {                            
<...snip...>
events: [{"id":"51","title":"Ship in Miami, Florida","eventstart":"2012-01-07 07:00:00","eventend":"2012-01-07 15:00:00"},{"id":"547","title":"Miami, Florida","eventstart":"2012-01-14 07:00:00","eventend":null}]
// put your options and callbacks here
})
});

我如何调整它,以便它在 fullCalendar 中作为数组工作?它似乎不想采用 JSON 字符串或数组,至少不采用 PHP 中数组现在的格式。

谢谢,克里斯

解决方案:

为 MySQL 字段别名:

<?php 
global $json_result;
$GLOBALS["ADODB_FETCH_MODE"] = ADODB_FETCH_ASSOC;
$myquery = "SELECT id, title, eventstart AS start, eventend AS end FROM View1";
$myqueryresult = $GLOBALS["conn"]->GetAll($myquery);
$json_result = json_encode($myqueryresult);
$GLOBALS["ADODB_FETCH_MODE"] = ADODB_FETCH_BOTH;
?>

还调整了 jQuery 以删除我的开始/结束参数,并将 allDaySlot 更改为 allDayDefault:

$(document).ready(function() {                            
$('#calendar').fullCalendar({
height: 600,
firstDay: 6,
theme: true,
year: 2012,
month: 0,
date: 7,
minTime: 6,
maxTime: 23,
defaultView: 'agendaWeek',
allDayDefault: false,
slotMinutes: 15,
events: <?php echo $json_result; ?>

// put your options and callbacks here
})
});

现在,如果我能找到一种方法让它显示 8 天的横向议程,我的麻烦就可以结束了!谢谢大家的提示。

最佳答案

根据 Event Object 的文档开始日期是必需的,并且必须指定为名为 start 的属性 - 您使用的名称为 eventstart

请注意,根据文档,startParamendParam是事件的 JSON feed 选项的参数,并且似乎不会更改用于开始和结束时间的属性名称。

<小时/>

更新1

我对此进行了一些尝试,有点违反直觉,除非您指定 allDay: false 作为事件的属性,即使有特定的时间范围,它也会显示在所有事件中您已使用 allDaySlot: false 禁用的日历顶部的日期时段。这是a working example使用几乎所有原始设置。

<小时/>

更新2

从您对 Matt 的回答的评论和文档中,我看到 allDay 属性的全局默认值是从 allDayDefault 继承的。属性默认为 true。因此,通过将选项中的 allDayDefult: false 传递给 fullCalendar(),您就无需为每个事件单独指定 allDay: false。这是 updated fiddle. 。请注意,您不必删除 allDaySlot,它只是指示显示全天事件的时段是否显示在顶部。

关于mysql - 如何在没有 URL 的情况下使用 JSON 编码数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6240369/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com