-1

我正在使用这样的 php 从 MySql 中检索数据 =>

while ($birthday_row = $birthday_r->fetch_row()){
    $birthday_array[] = array(
    'title' => $birthday_row[0],
    'start' => $birthday_row[1] . "-" . $birthday_row[2]
    );
}

JavaScript:

var json_obj_birthday = <?php if (isset($birthday_array)){echo json_encode($birthday_array);} ?>;
var json_obj_birthday_len = json_obj_birthday.length;
var d = new Date();
var event = [];
for (var i=0;i<json_obj_birthday_len;i++){ // adding manually year
    json_obj_birthday[i].start = d.getFullYear() + "-" + json_obj_birthday[i].start;
    event = {
        'title' : json_obj_birthday[i].title,
        'start' : json_obj_birthday[i].start
    };
}

在上面的 JavaScript 代码到event数组中只存储第一个数据,它只存储json_obj_birthday[0],我怎样才能将所有信息存储到event数组中?谢谢

PS。我希望该数组event使用完整信息进行 json 编码

更新

现在我试过这样

var events = <?php if (isset($birthday_array)){echo json_encode($birthday_array);} ?>;
        var d = new Date();
        for (var i = 0; i < events.length; i++){
            events[i].start = d.getFullYear() + "-" + events[i].start;
        }

也没有得到想要的结果

第二次更新

我需要我正在尝试做的事情,因为想将此event变量传递给 jQuery 完整日历,这里是脚本 =>

jQuery("#calendar").fullCalendar({ // initialize full calendar
        header: {
            left: 'prev,next today',
            center: 'title',
            right: 'month,basicWeek,basicDay'
        },
        events: [
            event
        ] // here was my fault , I must to have `events: event,`
    });

绑定你的代码后,日历中的信息没有插入,这就是我的意思不起作用

PS。如果有人对我在做什么以及为什么更感兴趣,请看一下我之前的问题,也可以每年将生日事件添加到 jQuery 完整日历中

4

4 回答 4

1

为什么不直接将 json 分配给events,然后更正start条目?

var events = <?php echo isset($birthday_array) ? json_encode($birthday_array) : "[]" ?>;
var d = new Date();
for (var i = 0; i < events.length; i++){
    events[i].start = d.getFullYear() + "-" + events[i].start;
}

请注意,我在 PHP 中添加了一个子句,以便如果$birthday_array未设置,javascript 会收到一个空数组,而不是语法错误。


您的代码不起作用,因为该行将存储的数组event = { ... } 替换event为单个 javascript 对象。

于 2012-09-06T19:52:48.643 回答
1

PHP:

while ($birthday_row = $birthday_r->fetch_row()){
    $birthday_array[] = array(
    'title' => $birthday_row[0],
    'start' => $birthday_row[1] . "-" . $birthday_row[2]
    );
}

JavaScript:

var json_obj_birthday = <?php if (isset($birthday_array)){echo json_encode($birthday_array);} ?>;
var json_obj_birthday_len = json_obj_birthday.length;
var d = new Date();
var event = [];
for (var i=0;i<json_obj_birthday_len;i++){ // adding manually year
    json_obj_birthday[i].start = d.getFullYear() + "-" + json_obj_birthday[i].start;
    event.push({
        'title' : json_obj_birthday[i].title,
        'start' : json_obj_birthday[i].start
    });
}
于 2012-09-06T19:57:18.063 回答
0
var json_obj_birthday = <?php if (isset($birthday_array)){echo json_encode($birthday_array);} ?>;
var json_obj_birthday_len = json_obj_birthday.length;
var d = new Date();
var event = [];
for (var i=0;i<json_obj_birthday_len;i++){ // adding manually year
    json_obj_birthday[i].start = d.getFullYear() + "-" + json_obj_birthday[i].start;
  var  event2 = {
        'title' : json_obj_birthday[i].title,
        'start' : json_obj_birthday[i].start
    };
event.push(event2);
}

在javascript中试试这个

于 2012-09-06T19:55:49.670 回答
0

我认为你在这里的整个方法是错误的。这是我的做法(此外,它不会显示警告/通知):

<?php

    $birthday_array = array();

    while ($birthday_row = $birthday_r->fetch_row()){
        $birthday_array[] = array(
            'title' => $birthday_row[0],
            'start' => $birthday_row[1] . "-" . $birthday_row[2],
        );
    }

?><script type="text/javascript">

    var json_obj_birthday = <?php echo json_encode($birthday_array); ?>;
    var json_obj_birthday_len = json_obj_birthday.length;
    var d = new Date();
    var event = [];

    for (var i=0; i < json_obj_birthday_len; i++){ // adding manually year
        json_obj_birthday[i].start = d.getFullYear() + "-" + json_obj_birthday[i].start;
        event.push({
            'title' : json_obj_birthday[i].title,
            'start' : json_obj_birthday[i].start
        });
    }

</script>

我的建议是;总是声明变量......永远不要只是将/递增/等附加到虚构变量。

最后,虽然将某些处理卸载到客户端 javascript 并没有错,但您可能需要考虑将其放在 PHP/服务器端。只是一个小笔记,不是很重要。

于 2012-09-06T19:58:00.107 回答