2013-05-15 163 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解析!