我必须创建一个javascript数组,其元素由php从数据库中获取。可能吗?如果是这样,怎么样?
(我不想用ajax来做)
答案 0 :(得分:5)
收集数组中的值并使用json_encode
将其转换为JSON:
$array = array();
while ($row = mysql_fetch_assoc($result)) {
$array[] = $row['key'];
}
echo 'var array = '.json_encode($array).';';
答案 1 :(得分:4)
答案1:是的,可以做到。
答案2:方法如下:
$js_array = "[";
$result = mysql_query("some query of yours");
while( $row=mysql_fetch_array($result, MYSQL_NUM) ) {
$js_array .= $row[0]; // assuming you just want the first field
// of each row in the array
$js_array .= ",";
}
$js_array{ strlen($js_array)-1 } = ']';
echo "var db_array = $js_array ;";
干杯!
答案 2 :(得分:1)
如果可以遍历数据库内容,则创建数组非常简单:
echo "var myArray = [";
在此处循环遍历数组并添加逗号以分隔值。
echo "];";
您的myArray变量将在客户端可用。它应该看起来像:
var myArray = [1, 3, 2, 4];
或者,为避免因基于循环的字符串连接而产生额外的逗号,可以按如下方式将变量写入客户端:
echo "var myArray = [];"
...并为每个数据行执行以下操作:
echo "myArray.push($db_data);"
虽然不像以前的方法那么干净,但这是有效的。您将得到类似于以下内容的代码:
var myArray = [];
myArray.push(3);
myArray.push(5);
myArray.push(1);
alert(myArray); // will display "3, 5, 1"
我对不熟悉PHP感到抱歉,但这可以用任何服务器端语言完成。
答案 3 :(得分:1)
<script language="javascript1.2">
var arr = new array(<?php
$result = mysql_query("select .... ");
$count = mysql_num_rows($result);
if($count>0){
for( $i=0;$i<$count-1;$i++) {
$row = mysql_fetch_row($result);
echo $row[0],',';
}
$row = mysql_fetch_row($result);
echo $row[0],',';
}
?>);
</script>
答案 4 :(得分:0)
这是一个正确处理数据中单引号的解决方案:
首先检索数据库数据,例如使用 mysqli _ 函数:
$result = mysqli_query($con, $sql);
if (!$result) die(); // error handling comes here
$array = mysqli_fetch_all($result, MYSQLI_ASSOC);
然后将其转换为JSON,转义单引号并输出JavaScript:
$output = str_replace("'", "\'", json_encode($array));
echo "var array = '$output';";
请注意json_encode
通过加倍反转来逃避反斜杠(应该如此)。并且不转义单引号是正常的,因为它无法知道我们将它放入的上下文。因此,当我们在JavaScript中注入它,将其包装在单引号中时,我们也负责转义报价。