2013-07-25 152 views
2

我有一個包含json的php變量,我使用json_encode將數組轉換爲json。從PHP發送json到javascript

如果打印我的變種我:

["L","M","M","J","V","S","D"] 

但是,如果我用我的VAR在JS,我有:

["L","M","M","J","V","S","D"] 

,我無法解析,因爲我有一個錯誤

Uncaught SyntaxError: Unexpected token & 

有沒有辦法讓json在我的js中?

感謝

編輯:

在PHP

$dayArray = array('L','M','M','J','V','S','D'); 
$dayArray = json_encode($dayArray) 

在JS

setDayArray('<?php echo $dayArray ?>'); 

setDayArray = function(dayArray){ 
    console.log(dayArray); 
} 

隨着樹枝

calendar.setDayArray({{ dayArray }}); 

這可能是由於symfony的渲染,我發現的唯一辦法是做在PHP中使用JSON頭

+1

你爲什麼使用htmlentities/htmlspecialchars? – bwoebi

+0

顯示如何在JavaScript中使用var。 –

+0

@BadWolf:這是一個非常糟糕的主意。是的,不要使用'htmlentities'。不,不要直接輸出它。 –

回答

1

我找到解決辦法

calendar.setDayArray({{ dayArray | raw }}); 

使用raw to允許HTML

4

要輸出JSON Ajax調用,輸出通過你的PHP結構通過json_encode的結果。從文檔

例子:

<?php 
$arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5); 

echo json_encode($arr); 
?> 

輸出:

{"a":1,"b":2,"c":3,"d":4,"e":5}

重新更新的問題,你使用

$dayArray = json_encode($dayArray) 
setDayArray('<?php $dayArray ?>'); // Wrong 

擺脫報價,除非包括echo它奇蹟般地獲得輸出一些其他的方式:

$dayArray = json_encode($dayArray) 
setDayArray(<?php echo $dayArray ?>); // Right 

當你這樣做時,瀏覽器會看到類似這樣的:

setDayArray(["L","M","M","J","V","S","D"]); // Right 

而不是

setDayArray('["L","M","M","J","V","S","D"]'); // Wrong 
+0

我有同樣的問題setDayArray(["大號","中號"," M "," J "," V "," S "," D "]); – Ajouve