我正在尝试使用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>
它不起作用,我只看到我的来源中的空白区域,列表中没有任何内容,任何人都可以告诉我哪里出错了...
答案 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;} ?>')