【发布时间】:2011-04-25 01:40:44
【问题描述】:
我需要知道什么更好/更有效,当我的页面加载时,我需要从数据库中加载一些元素。现在我使用 php 在脚本标签中生成正确的 JS。
看起来像这样
<script type="text/javascript">
canvas = $('#drawn').get(0)
c = canvas.getContext('2d');
<? foreach ($projectArray[1] as $shape): ?>
<?
switch ($shape['type']):
case 1: ?>
c.beginPath();
c.moveTo(<?=$shape['x_points'][0] ?>, <?=$shape['y_points'][0] ?>);
<? for ($point = 0; $point < count($shape['x_points'])-1; $point++): ?>
c.lineTo(<?=$shape['x_points'][$point] ?>, <?=$shape['y_points'][$point] ?>);
<? endfor; ?>
c.stroke();
<? break;
...
这会在页面底部生成一个很长的脚本,看起来像这样。
script type="text/javascript">
canvas = $('#drawn').get(0)
c = canvas.getContext('2d');
c.beginPath();
c.moveTo(373, 138);
...
c.lineTo(586, 242);
c.lineTo(588, 243);
c.lineTo(589, 244);
c.stroke();
c.beginPath();
c.moveTo(222, 165);
c.lineTo(222, 165);
...
c.lineTo(313, 309);
c.lineTo(261, 309);
c.stroke();
c.beginPath();
c.moveTo(81, 110);
c.lineTo(81, 110);
c.lineTo(84, 110);
...
如您所见,这会根据我从数据库中提取的内容生成一个基于 php 传递的数组的长脚本。在我内心深处,这感觉是错误的做法,我应该将数组编码为 json 并将其作为 json 对象进行迭代。
真的我的问题是,生成这样的脚本是否符合规定,或者我应该使用 json 吗?这样做的好处是什么?
【问题讨论】:
-
JSON。你重复了
c.lineTo(十亿次,所以在你的服务器上解析一堆数字和一个函数分隔符会更容易。 -
无论哪种方式,您都必须运行 c.lineTo( 很多只是我在带有对象的 for 循环中运行它,或者我从生成的长脚本运行它
-
不,Blender 的意思是,一遍又一遍地创建许多字符串“c.lineTo”(并将该脚本发送给用户)而不是仅仅发送原始数据数组,并在 javascript 中进行数字迭代。您在 PHP 中做的越少,您的应用程序就越能随用户扩展。
-
啊谢谢@greg 我很困惑
标签: php javascript html json