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

Cli*_*ote 19 javascript php arrays ajax dom

所以我从数据库中检索了一系列记录.数组采用格式;

$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
Run Code Online (Sandbox Code Playgroud)

将此数组传输到我的javascript代码的最佳方法是什么?我希望javascript能够循环遍历所有记录,并使用'id'属性,用一些信息更新带有该id的div.

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

在my_file.js中:

var rows=New Array();
Run Code Online (Sandbox Code Playgroud)

在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>
Run Code Online (Sandbox Code Playgroud)

bar*_*oon 29

我倾向于使用JSON对象:

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

解压缩对象时,可以将数组的内容打印到<DIV>标记中,或者在页面上的任何位置打印(jQuery对此非常好).

  • 如何使用javascript解压缩JSON对象?你可以为它添加一些示例代码和解压缩对象的样本吗?谢谢 (2认同)

Ken*_*ric 12

如果您正在进行内联数据,我一直都喜欢这样做

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

对于基本的东西,节省你做一个AJAX回调.此外,如果您想将数据粘贴到DOM节点,"metaobject"方式是我真正喜欢的.

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

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

我通常使用http://noteslog.com/metaobjects/插件来获取jQuery,但它很简单,我有时自己编写它(有一段时间我找不到插件,但新的工作原理如何)

完成后,会有

$("div#foobar> div").get().data.($ yourarrayhere)

您的代码可见.