2014-06-23 67 views
1

我用下面的PHP行一些SimpleXML的數據轉換爲數組:PHP/JavaScript的:如何從PHP傳遞數組的JavaScript

$dataRaw = array(); 
foreach($objCount->escalations as $esc) { 
    $dataRaw[(string)$esc->region] = (int)$esc->volume; 
} 
$dataPrep = json_decode(json_encode($dataRaw), TRUE); 

印刷這將返回看起來確定我下面:

Array ([af] => 6 [as] => 295 [eu] => 249 [na] => 279 [oc] => 42 [sa] => 10) 

然後我試圖通過這種使用以下行JS功能,但這不起作用。我沒有收到任何錯誤,圖表根本沒有顯示這一點,可能是因爲它無法識別內容。

data: <?php echo $dataPrep;?> 

當我硬編碼的「數據」,在JS值那麼隨後的一切工作正常,所以我大概經過是錯誤的。

var data = [{ 'hc-key': 'af', value: 6 }, 
    { 'hc-key': 'as', value: 295 }, 
    { 'hc-key': 'eu', value: 249 }, 
    { 'hc-key': 'na', value: 279 }, 
    { 'hc-key': 'oc', value: 42 }, 
    { 'hc-key': 'sa', value: 10 }]; 

有人能告訴我我在這裏需要改變嗎?

很多感謝,蒂姆。

+1

嘗試json編碼在php – Rajasekhar

回答

2

試試這個來得到想要的結構:

foreach($objCount->escalations as $esc) { 
    $dataRaw[] = array('hc-key' => (string) $esc->region, 'value' => (int) $esc->volume); 
} 

data: <?php echo json_encode($dataRaw); ?> 
+0

非常感謝!事實證明,這在我的情況下效果更好(可能是因爲關鍵部分),所以我會去那個。我會盡快接受。 – user2571510

4

您需要傳遞編碼數據,而不是在解碼之後。作爲解碼後,它變成陣列和直接我們不能分配數組js的變量:

foreach($objCount->escalations as $esc) { 
    $dataRaw[(string)$esc->region] = (int)$esc->volume; 
} 
$dataPrep = json_encode($dataRaw); 

和JS變量:

data: <?php echo $dataPrep;?> 
+0

非常感謝您的快速回復!這很好 - 我會盡快接受。 :) – user2571510

+0

事實證明,Danijel的下面的迴應在我的情況下效果更好(可能是因爲hc關鍵部分),所以我會去那個。非常感謝您爲我帶來正確的賽道! – user2571510

1

當您對數據進行json_encode編碼時,必須在再次創建數組之前將其解析爲JavaScript中的json。使用例如:http://api.jquery.com/jquery.parsejson/

但在你的情況,你已經通過調用json_decode將它轉換回php數組。你不能回顯一個php數組,並期望它顯示在像JavaScript數組的源代碼中。

+0

不可以,因爲其他答案已經完成,所以在這種情況下無需使用JavaScript的JSON.parse。 – James

+0

@詹姆斯,我指的是這一行: '$ dataPrep = json_decode(json_encode($ dataRaw),TRUE);' 在這裏,$ dataPrep將再次成爲一個php數組。 'echo $ dataPrep'只會產生'Array'作爲輸出 – marty

相關問題