【问题标题】:saving script variables from php variables in while loop在while循环中从php变量中保存脚本变量
【发布时间】:2013-11-15 05:38:01
【问题描述】:

一直试图将我的数据从我的 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>";

}

【问题讨论】:

  • 开发者控制台有错误还是什么?
  • 不要这样做。您将任意文本吐出到 javascript 上下文中。这意味着您必须生成 VALID javascript。如果您输出的任何$data 值包含',您将产生JS 语法错误。 总是在这种情况下使用php.net/json_encode。另外,您需要了解数组。它们会让你的生活比生成数以万计的data1data2data3 等变量更容易。
  • 最好在客户端生成一个数组,而不是离散的data0data1data2、...、dataN 变量?
  • 您还覆盖了$data 变量,因此while 循环的下一次迭代将出现问题。我会在 while 循环中重命名该变量。
  • 好吧,这是我从另一个人那里得到的一个例子,我真的不知道该怎么做:P @MarcB

标签: javascript php variables while-loop


【解决方案1】:

您在每次迭代时都在复制脚本标签。
您还需要用双引号或单引号将数据括起来。
但它不是那么安全..

$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>";

}

【讨论】:

  • 我想你的意思是$vars = ""; ;)
【解决方案2】:

这里最好的做法几乎肯定是创建一个数组(在 PHP 端),然后一次输出整个数组。

假设您已经在$array 中构建了一个数组,那么您将如何输出它:

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

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

在客户端脚本中,您可以通过data[0]data[1] 等直到data[data.length - 1] 访问每个项目。


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

...[你]调用mysql_fetch_array($data)然后[有]$data = $rows['data']再往下两行,从而覆盖$data...

...这往往会弄乱您的 fetch 循环。

【讨论】:

    猜你喜欢
    • 2013-10-29
    • 2013-03-26
    • 1970-01-01
    • 2017-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-05
    相关资源
    最近更新 更多