新手求教:怎么从数据库读取数据?

本人完全新手,给论坛大神添麻烦了,要指点这样一个新手。想从数据库读取数据,形成图表。情况如下:
ChartsController里面的内容:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Carbon\Carbon;

class ChartsController extends Controller
{
    public function chartdata()
    {
        $range = \Carbon\Carbon::now()->subDays(365);
        $data = DB::table('web_cpi_ppi')
                        ->select('date', 'cpi', 'ppi')
                        ->where('date', '>=', $range)
                        // ->orderBy('id', 'desc')
                        // ->take(10)
                        ->get();

        $result = $data->toArray();
        return json_encode($result);
    }

}

web.php里添加route,是get这个chartdata。然后浏览器访问这个chartdata,浏览器能显示一组json的数据,完全正常。
然后,我更改这个route的get为post。

 Route::get('/chartdata', 'ChartsController@chartdata')->name('chartdata');

页面代码如下:

<div id="_test"></div>
    <script>
        function _test()
        {
            var datax;
            $.post("{{ url('/chartdata') }}", {
                    "_token": "{{ csrf_token() }}"
                }, function(data) {
                datax = eval(data);
                });

            // var datax = [{"date":"2017-09-01","cpi":1.6,"ppi":6.9},{"date":"2017-10-01","cpi":1.9,"ppi":6.9},{"date":"2017-11-01","cpi":1.7,"ppi":5.8},{"date":"2017-12-01","cpi":1.8,"ppi":4.9},{"date":"2018-01-01","cpi":1.5,"ppi":4.3},{"date":"2018-02-01","cpi":2.9,"ppi":3.7},{"date":"2018-03-01","cpi":2.1,"ppi":3.1},{"date":"2018-04-01","cpi":1.8,"ppi":3.4},{"date":"2018-05-01","cpi":1.8,"ppi":4.1},{"date":"2018-06-01","cpi":1.9,"ppi":4.7}];

            var ds = new DataSet();
            var dv = ds.createView().source(datax);
            // fold 方式完成了行列转换,如果不想使用 DataSet 直接手工转换数据即可
            dv.transform({
                type: 'fold',
                fields: ['cpi', 'ppi'], // 展开字段集
                key: 'indexType', // key字段
                value: 'indexNumber' // value字段
            });

            var chart = new G2.Chart({
                container: '_test',

中间有段json数组被备注掉的,就是上面get到的,我直接赋值给datax,图表能正常显示。如果是test()一开始那段,读取数据,再eval(),再赋值给datax,就啥也没显示。调试看到图表js里很多未定义,alert了datax,也是未定义,好像没获得数据。

请教大神,怎么样才能获得数据,赋值给datax?
不胜感激!!!

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 3
Sampson

控制器中返回json数据,可以用return response()->json($result)
这样你在js中也不用eval函数转换,可以直接用。

5年前 评论

谢谢 楼上,又get到个新知识。
可是我,仍旧不知道这段代码怎么写,才能赋值给datax。楼上教我,不胜感激!


function _test()
        {
            var datax;
            $.post("{{ url('/chartdata') }}", {
                    "_token": "{{ csrf_token() }}"
                }, function(data) {
                datax = eval(data);
                });

5年前 评论

已解决,是回调函数不会用的问题。谢谢社区。

5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!