我正在使用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完整日历,这里是script =&gt;
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。如果有人更深入地了解我在做什么以及为什么,请看看我之前提出的问题add birthday events into jQuery full calendar each year
答案 0 :(得分: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 = { ... }
使用单个javascript对象替换<{1}}中存储的数组。
答案 1 :(得分: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
});
}
答案 2 :(得分: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中试试这个
答案 3 :(得分: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 /服务器端。只是一个小小的音符,并不是真正的关键。