在 PHP 和 Javascript 之间传输数组的最佳方式

2022-08-30 20:36:41

因此,我有一个从数据库中检索到的记录数组。数组的格式为;

$rows[0]['id']=1;
$rows[0]['title']='Abc';
$rows[0]['time_left']=200;


$rows[1]['id']=2;
$rows[1]['title']='XYZ';
$rows[1]['time_left']=300;
//And so on upto 10-20 rows

将此数组转移到我的javascript代码中的最佳方法是什么?我希望javascript能够遍历所有记录,并使用'id'属性,使用该id更新div并提供一些信息。

我的javascript代码在外部.js文件中,但我能够在页面的HTML代码中执行php代码。所以我可以做这样的事情:

my_file.js年:

var rows=New Array();

在 HTML 代码中:

<html>
<head>
<script type="text/javascript" src="js/my_file.js"></script>

<script type="text/javascript">
<? foreach ($rows as $row):?>
<? extract($row);?>
rows[<?=$id;?>]['title']="<?=$title;?>";
//And so on
<? endforeach;?>
</script>

答案 1

我倾向于使用JSON对象:

  • 在服务器端,JSON 对数据进行编码:json_encode($data);
  • 在JavaScript方面,我编写了一个函数,该函数将JSON对象作为参数并解压缩它。

当你解压缩对象时,你可以将数组的内容打印到一个标签中,或者在页面上任何你想要的地方(jQuery在这方面做得非常愉快)。<DIV>


答案 2

如果你正在做内联数据,我一直喜欢做

<script type="text/javascript">
window.sitescriptdata = {}; 
window.sitescriptdata.foo = ( <?php echo json_encode( $structure ); ?> );
</script>

对于基本的东西,节省了你做AJAX回调的时间。另外,如果你想将数据粘合到DOM节点上,“元对象”方式是我真正喜欢的。

<div id="foobar">
 <div><object class="metaobject">
        <param name="data" value="<?php echo htmlentities(json_encode($data), ENT_QUOTES );?>" />
 </object></div>
</div> 

现在,这可能看起来不是很好,但它是将数据直接与DOM节点相关联的有效方法,而无需知道该节点的确切唯一路径。如果您有许多需要附加到特定屏幕元素的数据集,则非常方便。

我通常使用 http://noteslog.com/metaobjects/ 插件进行jQuery,但它非常简单,我偶尔会自己编写(有一段时间我找不到插件,但它的工作原理很新)

完成后,将有

$(“div#foobar > div”).get().data.($yourarrayhere)

对代码可见。