2012-01-04 59 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