【问题标题】:jQuery/JS – Outputting objects inside an array – best practicejQuery/JS – 在数组中输出对象 – 最佳实践
【发布时间】:2014-06-19 12:49:04
【问题描述】:

需要一些建议。我正在使用一个 jQuery 日历插件(这似乎很少见!),它完全用 JS 初始化。没有 HTML。

要添加事件,您必须将每个事件写为数组中的对象:

events: [
        {
            title: "Title of event",
            start: {
                date: YYYYMMDD or "YYYYMMDD",   // "20131230"
                time: "HH.MM"                   // "12.00"
            },
            end: {
                date: YYYYMMDD or "YYYYMMDD",   // "20131230"
                time: "HH.MM"                   // "20.00"
            }
        },
        {
            title: "Title of event",
            start: {
                date: YYYYMMDD or "YYYYMMDD",   // "20131230"
                time: "HH.MM"                   // "12.00"
            },
            end: {
                date: YYYYMMDD or "YYYYMMDD",   // "20131230"
                time: "HH.MM"                   // "20.00"
            }
        }
    ],

我正在使用 Django,并且需要将每个事件的 for 循环编写成这种格式。所以,我的问题是,最好的方法是什么? JSON?这可能吗?将数据输出为 JS 对象的最佳做法是什么?

提前致谢,

R

【问题讨论】:

  • 不确定 django,但在 PHP 中,我会构造一个多维数组并使用 json_encode 将数组转换为 javascript 可解析对象。如果django有类似的功能,对你有帮助。
  • @ahgindia 好的,太好了。谢谢你。那么将 PHP/服务器端代码输出到 .js/ 标签中是否明智?
  • 您必须将所有事件都放入数据库中,因此可以在服务器端脚本中获取所有数据库记录并直接在服务器端创建 js 对象。
  • @ahgindia 你能给我举个例子吗,快点?不必工作,但我有一个想法。我已经为此苦苦挣扎了一段时间。
  • 例如请检查我的答案。

标签: javascript jquery json django


【解决方案1】:

根据@rdck 的要求,下面是一个如何实现的示例:

服务器端(PHP 示例):

<?php
$arr = array();
$arr[] = array(
    'title'=>'Title of event',
    'start' => array(
        'date'=>'YYYYMMDD',
        'time'=>'HH.MM'
        ),
    'end'   => array(
        'date'=>'YYYYMMDD',
        'time'=>'HH.MM'
        ),
);

$arr[] = array(
    'title'=>'Title of event2',
    'start' => array(
        'date'=>'YYYYMMDD',
        'time'=>'HH.MM'
        ),
    'end'   => array(
        'date'=>'YYYYMMDD',
        'time'=>'HH.MM'
        ),
);
?>

在 HTML 中

<script type="text/javascript">
    var events = '<?php echo json_encode($arr); ?>';
</script>

events 是您的 json 对象,您可以将其直接传递到您的活动日历中

【讨论】:

  • 谢谢!那么,如果我要将它包含在 JS 脚本函数中,这会是最好的方法吗? snippi.com/s/8z9wq4t
【解决方案2】:

我认为,最好的方法是 AJAX 请求。

但你可以将 json-string 添加到 context-dict 并在模板中渲染:

<script type="text/javascript">var events = {{ json_data }};</script>

【讨论】:

  • 谢谢!那么,如果我要将它包含在 JS 脚本函数中,这会是最好的方法吗? snippi.com/s/8z9wq4t
  • 我认为这种方式更好:snippi.com/s/elszzeo 要在 Django 中呈现 JSON,您可以手动处理您的查询集并制作 json.dumps 或使用 Django REST 框架来序列化和反序列化您的查询集。
  • 您能进一步解释一下吗?我觉得这对学习很有帮助。那么在/api/calendar/events/文件中,我会放JSON数据数组吗?
  • 是的,你在/api/calendar/events/ 中放置了 JSON。你没见过 AJAX 或 AJAJ?
  • 是的,但只是想确定一下。因此,在/api/calendar/events/ 中,我将有一个 index.html 文件,我将在其中输出我的 JSON 事件,然后只需执行您在此处所做的操作:snippi.com/s/elszzeo
猜你喜欢
  • 1970-01-01
  • 2018-06-16
  • 2010-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-25
  • 1970-01-01
  • 2019-02-19
相关资源
最近更新 更多