在while循环中保存php变量的脚本变量

时间:2013-11-04 14:58:44

标签: javascript php variables while-loop

一直试图将我的数据从我的while循环保存到脚本变量但没有成功。如果我想将我的php数据保存到脚本变量,请举个例子。这对我不起作用。任何人都有任何想法?不想手动保存所有数据。非常感谢答案!问你是否理解:)

$id = 0;
while($rows = mysql_fetch_array($data)){
$id = $id + 1;

$data = $rows['data'];

echo "<script>";

     echo "var data" . $id . " = " . $data . ";"; //???

echo "</script>";

}

2 个答案:

答案 0 :(得分:4)

这里最好的办法几乎就是创建一个数组(在PHP端),然后立即输出整个数组。

假设您已在$array中构建了一个数组,请按以下步骤输出数据:

echo "<script>var data = " . json_encode($array) . ";</script>"

更多关于json_encode in the docs,但基本上它将PHP数据编码为有效JSON。由于JSON是JavaScript对象和数组初始化程序语法的子集,因此您可以安全地输出JSON文本作为赋值的右侧,如上所述。

在客户端脚本中,您可以通过data[0]data[1]等方式访问每个项目。


另外,请注意Nathan Loding在问题评论中指出的内容:

  

... [您正在调用data[data.length - 1],然后[有] mysql_fetch_array($data)两行进一步向下,从而覆盖$data = $rows['data'] ......

...这会使你的获取循环陷入困境。

答案 1 :(得分:0)

您正在每次迭代时复制脚本标记 您还需要用双引号或单引号括起数据 但它并不那么安全..

$id = 0;
$data = "";
$vars = "";
while($rows = mysql_fetch_array($data)){
  $id = $id + 1;
  $data = $rows['data'];
  $vars .= "var data" . $id . " = \"" . addslashes( $data ). "\";"; //???
}

echo "<script>";

echo  $vars;

echo "</script>";

}