2012-01-04 35 views
1

可能重複:
What is the safest way of passing arguments from server-side PHP to client-size JavaScript如何插入PHP變量成javascript對象/陣列

目標:在用PHP數據的javascript對象替換靜態文件名。

問題:

我不知道我是否我的語法或邏輯是正確的,因爲我沒有得到任何的js或PHP錯誤。我的所有腳本中最糟糕的是沒有給出預期的結果。您可以在 http://www.iamvishal.com/dev/property/burradon-road-burradon線看到實際的頁面197

,我想用PHP做的JavaScript對象:

var data = { 'JPEG/1.jpg': { caption: '' }, 'JPEG/2.jpg': { caption: '' }, 'JPEG/3.jpg': 
{ caption: '' }, 'JPEG/4.jpg': { caption: '' }, 'JPEG/5.jpg': { caption: '' }, 
'JPEG/6.jpg': { caption: '' }, 
'JPEG/7.jpg': { caption: '' }, 'JPEG/8.jpg': { caption: '' },}; 

所以我需要一個PHP變量$ filename來替代JPEG/1.JPG 。以下是我的代碼。

<script type="text/javascript"> 

var data = { ; 


<?php 
$queryglob ="JPEG/*".$node->field_ropertyid['und'][0]['value'].".jpg"; 
// Here I am getting all the file names as per my condition. 

foreach (glob($queryglob) as $filename) { 
// here I am want each file name to be assigned into the javascript object 
?> 

data = data+'+<?php print $filename ; ?> +':{caption:''}, ; 
<?php 

} 
?> 

data = data+}; 

</script> 
+0

什麼是$節點更聰明嗎?看起來好像JPEG是這個PHP文件所在目錄內的一個目錄。這是真的? – abelito 2012-01-04 18:21:36

+0

$ node是一個由cms加載的數組,即drupal。它包含所有的數據信息。 JPEg是保存所有圖像的目錄,但腳本通過index.php加載 – 2012-01-04 19:00:05

回答

2

爲什麼不使用json_encode

<?php 
$data = array(); 
foreach (glob($queryglob) as $filename) $data[$filename] = array('caption' => ''); 
?> 
<script type="text/javascript"> 
var data = <?php echo json_encode($data); ?> 
</script> 

這比建設一個字符串

+0

哇!這很快。我會嘗試它,並回到你們 – 2012-01-04 18:22:46

+0

+1對於json_encode – naomik 2012-01-04 18:32:39

+0

嗨, 我使用相同的json_encode,但是當我打印這個數組它顯示[對象對象]。任何想法? – 2012-02-29 12:32:39