PHP数组输出到javascript函数

时间:2013-09-01 07:08:48

标签: php javascript mysql

我正在尝试使用php连接数据库并使用javascript动态显示结果。 这是我想做的事情 -

<?php
function mainMenu($q){
$res=array();;
$q->setFetchMode(PDO::FETCH_NUM);   
while($r = $q->fetch()){
    array_push($res, "
    <li>
       <a class='gn-icon ".mysql_real_escape_string($r[0])."'>".mysql_real_escape_string($r[1])."
       </a>
    </li>");
}
return $res;
} ?>

现在这里是html,绝对有效

<ul id="sidemenu" class="gn-menu">
    <?php 
        $a=mainMenu($q);
        foreach ($a as $value) {
            echo $value;
        }
    ?>                       
</ul>

但是当我尝试这个时 -

<script> 
$('#sidemenu').html(<?php 
    $b=mainMenu($q);
            foreach ($b as $value) {
           echo "$value";
}
 ?>);
</script>

它不起作用,我只看到我的来源中的空白区域,列表中没有任何内容,任何人都可以告诉我哪里出错了...

2 个答案:

答案 0 :(得分:1)

<?php
function mainMenu($q) {
  $res=array();
  $q->setFetchMode(PDO::FETCH_NUM);   
  while( $r = $q->fetch() ) {
    array_push($res, "<li><a class='gn-icon ".mysql_real_escape_string($r[0])."'>".mysql_real_escape_string($r[1])."</a></li>");
  }
  return $res;
} 
?>

<script> 
$('#sidemenu').html("<?=implode('',mainMenu($q))?>");
</script>

答案 1 :(得分:0)

你需要使用“反斜杠”,

来逃避输出中的单引号
<a class=\'gn-icon ".mysql_real_escape_string($r[0])."\'>".mysql_real_escape_string($r[1])."   </a>

你需要像这样使用.html,

.html('<?php $b=mainMenu($q); foreach ($b as $value) { echo $value;} ?>')