![](/img/trans.png)
[英]Using a for loop to insert javascript variable into json encoded php variable
[英]json encoded php variable into javascript
我正在用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完整日歷中
為什么不將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會收到一個空數組,而不是語法錯誤。
您的代碼無法正常運行,因為line event = { ... }
用單個javascript對象替換了event
存儲的數組。
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
});
}
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
我認為您的整個方法是錯誤的。 這是我的操作方法(此外,它不會顯示警告/通知):
<?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 /服務器端。 只是一個小提示,並不是很關鍵。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.