2012-09-06 38 views
-1

我从MySQL检索数据用PHP这样=>JSON编码PHP变量成JavaScript

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编码

UPDATE

现在我已经试过这样

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; 
     } 

,并没有得到期望的结果以及

第二次更新

我需要wha T I正在尝试做的,因为要在此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。如果有人对我所做的更深入的兴趣以及为什么,请看看我之前的问题add birthday events into jQuery full calendar each year

+0

您正在为该JavaScript循环中的事件分配一个“对象”,而不是数组中的索引。 –

+1

event.push({title:json_obj_birthday [i] .title,start:json_obj_birthday [i] .start});和JSON.stringify(事件)转换为JSON –

+0

'事件'不是一个数组。 –

回答

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 /服务器端。只是一个小记录,并不是非常重要。

+0

** - 1 **这与原来的问题完全相同。 – Eric

+0

@Eric我没有解决他的完整问题。我解决了一些你们杰出人士未能注意到的问题。现在请给我一些时间,而我努力了我的魔力,好吗? – Christian

+0

我假设'$ birthday_array'被初始化了。 PHP真的让你追加到未初始化为数组的变量!? – Eric

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对象数组。

+0

了解为什么不起作用,但我也试过你的例子,它不起作用 – tnanoba

+0

@DaHaKa:不以什么方式工作?我将“事件”更名为“事件”,因为这似乎欺骗了你以前的错误。你可能想检查你是否在其他地方将它称为“事件”。 – Eric

+0

更新后的问题:) – tnanoba

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

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 
    }); 
}