我正在使用PHP在我正在处理的项目中将一些数据传递给javascript。在我的PHP中我有:
<?php
$allprojects = $pages->find('projects')->children();
$transfer = array();
$i=0;
foreach ($allprojects as $p) {
$transfer[] = array(
'i' => $i,
'title' => $p->title()->value,
'url' => $p->url(),
'thumb' => thumb($p->children()->first()->images()->first(), array('width'=>170))
);
$i++;
}
?>
<script>
var projects = <?php print json_encode($transfer); ?>
</script>
如果我尝试使用此变量projects
,那么它就是一个数组。即:
projects instanceof Array == true
对于为什么会这样,我有点困惑。有人可以说明这种情况吗?
答案 0 :(得分:2)
JSON是一种数据交换格式,用于将对象或对象列表表示为字符串。在您的情况下,您使用格式将列表(特别是数组)$transfer[]
从运行服务器端的PHP交换到客户端的Javascript。
如果您在浏览器中查看生成的HTML源代码,您将看到以下行:
var projects = <?php print json_encode($transfer); ?>
已被渲染为,例如:
var projects = [{i: 1, title: "Example", url: "www.example.com", thumb: "example.jpg" }];
就JavaScript而言,这一行将projects
定义为对象的数组(使用[]
)(使用{}
)。因此,您已成功使用该格式将您启动的对象数组从服务器交换到客户端。
如果你想再次将它的JSON格式转换为客户端的变量,也许是为了以某种方式将其传递回服务器,你可以使用:
var projectsJSON = JSON.stringify(projects);