【问题标题】:show event in fullcalendar with json.parse (SyntaxError: missing : after property id)使用 json.parse 在 fullcalendar 中显示事件(SyntaxError: missing : after property id)
【发布时间】:2019-05-24 13:40:07
【问题描述】:

在加载屏幕后在日历中显示事件。

events: {
    JSON.parse(get_data());
},

CONTROLLER 一切正常,这里除了 JSON.PARSE 没有问题

$calendar = array();
foreach($data_calendar as $key => $val) {
    $calendar[] = array(
        'id' => intval($val - > id),

        'title' => $val - > title,
        'description' => trim($val - > description),
        'start' => date_format(date_create($val - > start_date), "Y-m-d H:i:s"),
        'end' => date_format(date_create($val - > end_date), "Y-m-d H:i:s"),
        'color' => $val - > color,
    );
}

$data = array();
$data['get_data'] = json_encode($calendar);

$data['telaativa'] = 'agenda'; //retorna agenda penso que manté menu barra esquerda colapsada em agenda 
$data['tela'] = ('/calendario/view_agenda--');
view_agenda--

$this - > load - > view('view_home2', $data);

结果中带有 1 或“1”的结果 id 是因为我为 id 声明了 intval,因此我可以在输出中获得两种格式。

 'get_data' => string '[{"id":1,
 'get_data' => string '[{"id":"1",
array (size=3)
      'get_data' => string '[{"id":1,"title":"teste evento1","description":"descri\u00e7\u00e3o do evento bla bla bla","start":"2019-05-06 00:00:00","end":"2019-05-07 00:00:00","color":"#0071c5"},{"id":6,"title":"cert soldador 1-1","description":"descrtivo do certificado ser 111 bw t1-25mm s275","start":"2019-05-29 23:00:00","end":"2019-05-30 00:00:00","color":"#40E0D0"},{"id":7,"title":"cert soldador 1-2 soldador nr1","description":"certificado de soldador nr 1 doc 1-2","start":"2019-05-30 00:00:00","end":"2019-05-31 00:00:00","color'... (length=5865)
      'telaativa' => string 'agenda' (length=6)
      'tela' => string '/calendario/view_agenda--' (length=25)

查看

$(document).ready(function() {
    $('.date-picker').datepicker();
    $('#calendarIO').fullCalendar({
        header: {
            left: 'prev,next today',
            center: 'title',
            right: 'month,basicWeek,basicDay'
        },
        defaultDate: moment().format('YYYY-MM-DD'),
        editable: true,
        eventLimit: true, // allow "more" link when too many events
        selectable: true,
        selectHelper: true,
        select: function(start, end) {
            $('#create_modal input[name=start_date]').val(moment(start).format('YYYY-MM-DD'));
            $('#create_modal input[name=end_date]').val(moment(end).format('YYYY-MM-DD'));
            $('#create_modal').modal('show');
            save();
            $('#calendarIO').fullCalendar('unselect');
        },
        eventDrop: function(event, delta, revertFunc) { // si changement de position
            editDropResize(event);
        },
        eventResize: function(event, dayDelta, minuteDelta, revertFunc) { // si changement de longueur
            editDropResize(event);
        },
        eventClick: function(event, element) {
            deteil(event);
            editData(event);
            deleteData(event);
        },

        events: {

            JSON.parse(get_data());

        },

    });
});

错误 SyntaxError: missing : after property id

如果我删除JSON.parse(get_data());,我的日历将可见但没有事件。如果我添加一个事件,它将一直显示,直到我刷新页面。所有功能工作都需要将数据从数据库加载到日历中。

【问题讨论】:

  • 如果 get_data 是一个返回序列化数组的 javascript 函数,则您的代码应为不带括号的 events: JSON.parse(get_data()),。如果不这样做,您的 get_data 函数会返回什么?
  • SCRIPT1003:预期为“:”
  • JSON.parse(get_data);
  • 1): events: 需要被赋予一个数组,而不是一个对象,因此从声明中删除 {}。 2) 请问您的 get_data() 函数的代码在哪里?这似乎是这个问题的关键部分,但你还没有提供它。如果没有看到,我们真的无法确定发生了什么。
  • 事件:JSON.parse(get_data); -> SyntaxError: missing } after property list[Saber mais]议程:852:43注意:{在第 822 行第 42 列打开

标签: javascript json codeigniter fullcalendar fullcalendar-3


【解决方案1】:

您似乎对如何在视图中使用 PHP 视图数据感到困惑。

我想也许您应该阅读以下内容:https://www.codeigniter.com/user_guide/general/views.html#adding-dynamic-data-to-the-view。它向您展示了如何将您提供给视图的 PHP 数据注入到您的页面中。

你现在正在编写纯 JavaScript,它试图调用一个不存在的函数。您需要做的是编写一个 PHP sn-p 将服务器端数据注入到 PHP 正在创建的 HTML 和 JavaScript 代码中。

我不是 CodeIgniter 专家,但根据该文档页面,我认为您应该写的是:

events: <?php echo $get_data; ?>,

如果你像这样不带引号注入它,那么它会自动被视为 JavaScript 数组字面量,因此不需要 JSON.parse()。这是因为 JSON 语法是有效 JavaScript 对象语法的子集。如果您使用浏览器中的查看源代码功能来查看页面的最终输出,您就会明白我的意思。

(请注意,您还需要从 events: 声明中删除 {},因为 fullCalendar 需要一个数组,而不是一个对象。

【讨论】:

  • 好吧,我遵循了一些已经制作的东西,所以它可能有错误的代码github.com/syifandimulyanto/codeigniter-fullcalendar
  • 我有一个返回数组
  • 受保护的 '_ci_cached_vars' => 数组 (size=3) 'get_data' => 字符串 '[{"id":1,"title":"teste eventto1","description":"descri \u00e7\u00e3o do eventto bla bla bla","start":"2019-05-06 00:00:00","end":"2019-05-07
  • 事件:,
  • 它工作了,谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-20
  • 2023-03-27
  • 2020-08-24
相关资源
最近更新 更多