如何在javascript中访问多维php数组?

时间:2011-03-04 07:09:00

标签: php javascript

代码是这样的:

<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期间调用Show Review。 {php}代码中设置了$arr。 我尝试只是在主PHP代码中访问数组并将结果字符串传递给javascript,这是URL的'?&amp; PQID = ar&amp; PQno = 1 ...'部分,但它没有成功通过。我尝试将数组本身传递给javascript但js但我无法访问内容。

3 个答案:

答案 0 :(得分:3)

PHP在服务器上运行,客户端上运行Javascript - 他们根本看不到彼此的变量。可以这样想 - PHP代码只生成文本。它可能是Javascript,但就PHP而言,它只是文本。

基本上,您需要使用PHP生成有效的Javascript文本,以便在客户端上创建相同的数据结构。

答案 1 :(得分: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>

答案 2 :(得分:1)

将此添加到JS函数:

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

JS-Array中的“arr”现在可以通过JS访问PHP-Array“$ arr”。

我猜你正在尝试这样的事情:

<?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>