2013-05-15 125 views
0

的代码看起来是这样的:访问使用JavaScript变量作为指数PHP数组元素

PHP文件

<?php 
... 
$arrayName = ['ArrayValue_0', ..., 'ArrayValue_n']; 
... 
php?> 

的JavaScript

$('.elementClass').each(function(index, id) { 
    $(id).html('<?php echo $arrayName[index - 1]?>'); 
}); 

但你不能只是插入像这样的JavaScript变量到php标签,所以索引从来没有收到。 我知道这可以通过AJAX来完成,但有没有其他方法?提前致谢。

附加信息: 我被告知要在PHP中这样做,所以没有将数组切换到JS文件的可能性。

+1

PHP是一个服务器端语言。当客户端收到页面时,PHP代码已经被执行。所以不,你不可能用这个技巧来做到这一点。 – MaxArt

回答

7

可以在JS定义arrayName变量,并与来自服务器的值初始化:

var arrayName = <?php echo json_encode($arrayName); ?>; 
$(".elementClass").each(function(index, id) { 
    $(id).html(arrayName[index-1]); 
}); 
+1

这json_encode的狡猾:) +1 – asifrc

+0

这正是我的目标。非常感谢。 –

0

如果您希望从服务器获取信息(PhP在服务器上运行),则需要返回服务器,因此无论是在加载包含您的完整内容的页面时,都会立即创建JavaScript变量PhP数组,无论是使用ajax返回服务器而不刷新整个页面。

1

你试图做的事情不会奏效。例如这样的:

$(id).html('<?php echo $arrayName[index - 1]?>'); 

以上将永远,永远的工作,因为PHP是一个服务器上运行,而不是你的用户的浏览器。

你需要做的是将变量以某种方式发送到服务器。你有选择过多:

  1. 使用的格式,并读取$_POST变量
  2. 将其追加到URL和读取$_GET变量
  3. 使用Ajax和异步变量发送到服务器
  4. 从PHP整个阵列返回到你的JavaScript代码
  5. 等等,等等

记住,PHP运行Ø在服务器上呈现页面,然后在运行Javascript的浏览器中读取该页面。你不能将PHP代码粘贴到页面中,并期望它被PHP解析!