如何将json对象从PHP转换为Javascript数组

时间:2019-02-12 22:18:32

标签: javascript php

背景信息

我需要将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] }

有人可以指出我正确的方向吗?

谢谢。

1 个答案:

答案 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 ?>;