背景信息
我需要将javascript数组“传递”给其他人编写的某些前端逻辑。在查看他们的代码时,我看到他们正在创建这样的伪数据:
<script>
//define some sample data
var tabledata = [
{id:1, name:"JohnDoe", company:"Acme", email:"jdoe@acme.com", title:"CEO", regtype:"12345"},
{id:2, name:"JaneDoe", company:"Widgets Inc", email:"janedoe@hotmail.com", title:"Programmer", regtype:"12345"}
];
我的逻辑是所有从数据库获取真实数据的后端东西。 我返回一个看起来像这样的json字符串:
{
"items": [{
"id": 2089025,
"first_name": "Devon",
"last_name": "Ackerman"
}, {
"id": 2163367,
"first_name": "Ryan",
"last_name": "Acuff"
}]
}
问题
我不知道在PHP中进行转换/转换以使其最终成为Javascript中的数组的正确方法。
代码
这是我到目前为止在PHP中拥有的代码,a)证明我正在获取字符串b)尝试将其转换为json对象。
$json_obj = json_decode($response, true);
//echo json_last_error();
echo gettype($response);
echo gettype($json_obj);
第一个gettype()返回“字符串”。第二个返回“数组”。
几行后,我完成了PHP部分,然后执行此操作:
<script type="text/javascript">
// pass PHP variable declared above to JavaScript variable
var tabledata = <?php echo ($json_obj) ?>;
console.log(typeof(tabledata))
console.log(tabledata)
我在控制台中看到以下内容作为对console.log()的两次调用的输出:
function
ƒ Array() { [native code] }
有人可以指出我正确的方向吗?
谢谢。
答案 0 :(得分:1)
var tabledata = <?php echo ($json_obj) ?>;
应该是...
var tabledata = <?php echo json_encode($json_obj) ?>;
这会将其转换为json,并且在页面加载时浏览器会自动为您解析。
在您的情况下,由于您已经开始使用编码值,因此可以使用它。
var tabledata = <?php echo $response ?>;
或者我相信PHP具有回显的快捷方式,您也可以...
var tabledata = <?= $response ?>;