【问题标题】:Json encode returning undefined in javascriptJson编码在javascript中返回未定义
【发布时间】:2020-02-12 19:53:21
【问题描述】:

我在 PHP 中有多维数组,我已使用 json 编码将其转换为 json。现在,当我在 javascript 中执行 console.log 时,它显示未定义。

当我执行 JSON.parse 时,错误显示

jquery.js:687 Uncaught SyntaxError: Unexpected token u in JSON at position 0
    at JSON.parse (<anonymous>)

这是我的 json 编码数据

"{"select_data":[{"id":10563,"fullname":"Raj Bahadur Thapa","created_by":121,"company_id":68,"company_name":"WhiteHat","selected_at":"2019-10-03 12:14:18","t_count":1,"p_count":3.571428571428571},{"id":10554,"fullname":"Sebastian Antony Sahayan","created_by":121,"company_id":19,"company_name":"Concentrix","selected_at":"2019-10-03 11:22:15","t_count":3,"p_count":10.714285714285714},{"id":10545,"fullname":"Natasha Fernandes","created_by":121,"company_id":21,"company_name":"Firstsource","selected_at":"2019-10-03 10:37:59","t_count":3,"p_count":10.714285714285714},{"id":10537,"fullname":"Farahnaaz Khan","created_by":121,"company_id":90,"company_name":"Hexaware","selected_at":"2019-10-03 10:08:17","t_count":2,"p_count":7.142857142857142},{"id":9788,"fullname":"Saneesh M","created_by":121,"company_id":11,"company_name":"Tele Performance ","selected_at":"2019-10-03 09:58:38","t_count":19,"p_count":67.85714285714286}],"p_count_arr":[3.571428571428571,10.714285714285714,10.714285714285714,7.142857142857142,67.85714285714286]}"

Laravel 查询

public function company_wise_select()
    {

        $sub_query = DB::table('in_lineups_tracker')
            ->join('in_lineups', 'in_lineups.id', '=', 'in_lineups_tracker.candidate_id')
            ->join('companies', 'companies.id', '=', 'in_lineups.company_id')
            ->join('users', 'users.id', '=', 'in_lineups.created_by')
            ->where([
                ['in_lineups_tracker.status', 19],
                ['in_lineups_tracker.type', 3],
                ['users.id', 405]
            ])
            ->groupBy('in_lineups.id')
            ->select(
                'in_lineups.id',
                'in_lineups.fullname',
                'in_lineups.created_by',
                'companies.id as company_id',
                'companies.name as company_name',
                'in_lineups_tracker.created_at as selected_at'
            );

        $el_query = DB::table(DB::raw("({$sub_query->toSql()}) as table_001"))
            ->mergeBindings($sub_query)
            ->select(
                '*',
                DB::raw('COUNT(*) as t_count')
            )
            ->groupBy('table_001.company_id')
            ->orderBy('table_001.selected_at', 'DESC')
            ->limit(5)
            ->get();


        $totalCount = $el_query->sum('t_count');

        foreach ($el_query as $select)
        {
            $select->p_count = ($select->t_count/$totalCount) * 100;
            $p_count_arr[] = $select->p_count;
        }

        $data['select_data'] = $el_query;
        $data['p_count_arr'] = $p_count_arr;
        return json_encode($data);

    }

如何在 javascript 中对其进行 json 解码并利用数据?

【问题讨论】:

  • 你能显示那个 php 代码吗?
  • 你的 JSON 不正确,试试JSON VALIDATE
  • 未定义?错误似乎是质疑 JSON 的有效性。
  • 您发布为“json 编码数据”的值既不是 JSON,也不是 JavaScript 字符串。如何将数据从 PHP 脚本传输到 JavaScript 代码?你是使用 Ajax 还是 PHP 代码生成 JavaScript 代码?
  • 我是 json 编码 Laravel 集合

标签: javascript php json


【解决方案1】:

试试这个

<script>
var data= <?= json_encode($array) ?>
console.log(data);
</script>

【讨论】:

  • 其实我不想走这种方法。我只对我的数据后端进行编码,但 javascript 说数据未定义
【解决方案2】:

您可以使用 JSON.stringify() 来实现这一点

var JsonObj = <?php echo $json;?>;
var myJsonData = JSON.stringify(JsonObj);

console.log(myJsonData);

【讨论】:

  • 不,他们不能。请参阅问题的第一句话,即原始数据使用 PHP,而不是 JavaScript。
  • 您可以通过添加 在 JsonObj 中
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-09-20
  • 2021-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-18
相关资源
最近更新 更多