2013-05-08 75 views
0

我正在一個網站上工作,我不得不在Javascript中創建一個PHP循環。這可能嗎?這是我需要循環的代碼片段。Javascript,Mysqli和PHP循環

<? while($calendar = mysqli_fetch_array($client_get_calendar)) { ?> 
{ 
title: '<? echo $calendar['event_title'] ?>', 
start: new Date(<? echo date("Y", strtotime($calendar['date_start'])) ?>, <? echo date("m", strtotime($calendar['date_start'])) ?>, <? echo date("d", strtotime($calendar['date_start'])) ?>), 
end: new Date(<? echo date("Y", strtotime($calendar['date_end'])) ?>, <? echo date("m", strtotime($calendar['date_end'])) ?>, <? echo date("d", strtotime($calendar['date_end'])) ?>), 
className: '<? echo $calendar['importance'] ?>' 
}, 
<? } ?> 

這個工作對於我想要完成的工作嗎?它給了我一個錯誤,但我不知道代碼有什麼問題。謝謝你的幫助!

+5

什麼是你想實現什麼?你遇到了什麼錯誤? – RMcLeod 2013-05-08 16:19:58

+0

您在JavaScript或PHP中遇到錯誤的位置?什麼錯誤信息說? – Vadim 2013-05-08 16:21:02

+0

@<?'不是'<?php' – christopher 2013-05-08 16:21:33

回答

0

您似乎正在爲JavaScript數據對象構建JSON輸出。

這會更好地實現以下。

<?php 
$calendar = mysqli_fetch_array($client_get_calendar); 
echo json_encode($calendar); 
?> 

在循環中隨意修改數組。

0

JSON很好,JSON不會殺死北極熊。每當有人建立一個沒有JSON的Javascript對象時,一個北極熊就會死亡。

$rows = array(); 
while($calendar = mysqli_fetch_array($client_get_calendar)) { 
    $nRow = array(
     'title'  => '' /* <= do your tricks here */, 
     'start'  => '' /* <= and here */, 
     'end'  => '' /* <= and here */, 
     'className' => '' /* <= and here */ 
    ); 
    // Now append it do rows 
    $rows[] = $nRow; 
} 
// dat magic 
echo json_encode($rows); 
0

我假設你在IE上遇到語法錯誤。

而你試圖製作一個javascript數組的對象。

在這種情況下,您在腳本 的末尾附加了一個逗號,這會導致IE出錯。 解決方案就像@IAmNotProcrastinating說的那樣,製作一個json。

如上面的答案,您可以保存您的數據並將其編碼爲json字符串。

繼續@IAmNotProcrastinating工作,而不是直接輸出:

<?php 
if(count($row)>0){ 
    $data = json_encode($row); 
} 
else{ 
    $data = json_encode(array()); 
} 
?> 
var js_data = <?php echo $data; ?>; 
do_something_with_js_data(js_data);