2011-03-04 131 views
1

的代碼是這樣的:如何在javascript中訪問多維php數組?

<SCRIPT LANGUAGE="JavaScript"> 
    function showReview(){ 
     //javascript stuff 
     <?php 
      $http="obj.href ='http://localhost/PROJECT1/thispage.php'"; 
       if (array_key_exists(0, $arr)){ 
      $http .= "+'&PQID={$arr[0]['ID']}'+ 
        '&PQNo={$arr[0]['QNo']}'+ 
        '&PNextSWF={$arr[0]['NextSWF']}';"; 
      } 
      echo $http; 
      ?> 

     } 
</SCRIPT> 

但我不能訪問$arr陣列。我試圖將其聲明爲全局變量或使用$GLOBALS變量。

顯示評論在onclick期間被調用。 $arr在主要的php代碼中設置。 我試圖訪問主要的PHP代碼中的數組,並將結果字符串傳遞給JavaScript,這是'? & PQID = ar & PQno = 1 ...'部分網址,但未成功通過。我嘗試將數組本身傳遞給JavaScript,但js,但我無法訪問的內容。

+0

的JavaScript,一個客戶端技術,將永遠無法從PHP,服務器端技術訪問數據。充其量,您可以做的是使用PHP生成JavaScript代碼,然後由您的訪問者的瀏覽器執行。 – madd0 2011-03-04 07:12:03

+0

@ madd0這不完全正確,這取決於您對「訪問數據」的定義。即使在加載頁面後,您也可以將AJAX請求發送到PHP腳本,該腳本用來自服務器的數據進行響應。我會稱之爲「從PHP訪問數據」。 – NullUserException 2011-03-04 07:18:23

+0

@NullUserException:您正在討論的數據很可能是您爲了JavaScript解釋而調用的PHP腳本編組爲JSON(即JavaScript),所以不,JavaScript不直接訪問PHP數據。 – madd0 2011-03-04 07:22:14

回答

1

一下添加到JS-功能:

var arr=<?php echo json_encode($arr); ?>; 

的PHP陣 「$ ARR」 現在應該通過JS功能 「改編」 內部訪問JS。

我想你想是這樣的:

<?php 
    //example array 
    $arr=array(
    array('ID'=>'0','QNo'=>'q0','NextSWF'=>1), 
    array('ID'=>'1','QNo'=>'q1','NextSWF'=>2), 
    array('ID'=>'2','QNo'=>'q2','NextSWF'=>3), 
); 
?> 
<script type="text/javascript"> 
function showReview(nr) 
{ 
    //make the array accessible to JS 
    <?php echo 'var arr='.json_encode($arr);?> 

    //some obj, don't no what it is in your case 
    var obj={}; 

    var href='http://localhost/PROJECT1/thispage.php'; 
    if(typeof arr[nr]!='undefined') 
    { 
    href+='?PQID='+arr[nr]['ID']+ 
      '&PQNo='+arr[nr]['QNo']+ 
      '&PNextSWF='+arr[nr]['NextSWF']; 
    } 
    else 
    { 
    alert('key['+nr+'] does not exist'); 
    } 

    //check it 
    alert(href); 

    //assign it 
    obj.href=href; 
} 


</script> 
<b onclick="showReview(0)">0</b>- 
<b onclick="showReview(1)">1</b>- 
<b onclick="showReview(2)">2</b>- 
<b onclick="showReview(3)">3</b> 
+0

我試過了。我無法訪問內容。也許是因爲js不支持關聯數組?由json_encode支持 – Dian 2011-03-04 07:38:14

+0

關聯數組。但是我沒有看到你試圖通過javascript訪問這個數組,你能解釋一下它是怎麼發生的? – 2011-03-04 07:41:43

+0

真的嗎?然後我不知道爲什麼它沒有顯示。在那段代碼之後,我嘗試了alert(arr [0] ['ID']);'和alert(arr.length);'。沒有顯示。 – Dian 2011-03-04 07:54:30

1

試試這個

<SCRIPT LANGUAGE="JavaScript"> 
    function showReview(){ 
     //javascript stuff 
     var http = 
     <?php 
      $http="obj.href ='http://localhost/PROJECT1/thispage.php'"; 
       if (array_key_exists(0, $arr)){ 
      $http .= "+'&PQID={$arr[0]['ID']}'+ 
        '&PQNo={$arr[0]['QNo']}'+ 
        '&PNextSWF={$arr[0]['NextSWF']}';"; 
      } 
      echo $http; 
      ?> 

     } 
</SCRIPT> 
+0

我不工作。我也嘗試過這種變化。 – Dian 2011-03-04 07:18:01

+0

你是否嘗試做一個「查看源代碼」來檢查瀏覽器中顯示的內容? – 2011-03-04 07:20:11

+0

我剪掉'obj.href ='部分,並試圖document.write http var,它不顯示任何內容。 – Dian 2011-03-04 07:41:11

3

PHP運行在服務器上,客戶端的JavaScript - 他們根本看不到一切真的對方的變量。想想這樣 - PHP代碼只是生成文本。它可能是Javascript,但就PHP而言,它只是文本。

基本上,您需要使用PHP來生成有效的Javascript文本,以便在客戶端上創建相同的數據結構。