Ajax调用以触发控制器功能

时间:2019-02-02 23:31:09

标签: ajax laravel controller maps chart.js

我对laravel并不陌生,也没有太多使用AJAX的经验。我几天来一直在努力解决问题,希望有人能指出正确的方向。

我在一个视图中使用Chart.js和Google Maps API。一切都可以初始化,所以那里没有问题。我在地图上绘制了一些标记,并在Chart.js中加载了数据集。单击标记时,我想在Chart.js中加载新数据集。我正在尝试使用AJAX与另一个数据集调用控制器函数。没有错误返回,来自AJAX调用的控制台日志正在工作,但未调用MapController中的函数。

我试图用Postman在/ map路由上进行POST,这似乎可以正常工作。

视图中的AJAX调用

$.ajax({ 
            url: "/map",
            type: "POST",
            data: "",
            headers: {"X-CSRF-TOKEN": $("meta[name="csrf-token"]").attr("content")},
            success: console.log("AJAX END")
            });

路线

Route::post('/map', 'MapController@NewChart');

控制器功能

    public function NewChart()
{

    echo "<script>console.log('NewChart function called');</script>";

    $chart = new chart;
    $chart->labels(['Q1', 'Q2', 'Q3', 'Q4']);
    $chart->dataset('2019', 'line', [100, 10, 4, 10]);
    $chart->dataset('2018', 'line', [5, 5, 5, 5]);

    return view('map', ['chart' => $chart]);

}

未触发NewChart函数的控制台日志,因此AJAX调用永远不会到达该函数。

我希望有人可以告诉我我在这里做错了。

1 个答案:

答案 0 :(得分:0)

请为您的ajax请求尝试使用以下结构:

Nothing?

也许您的调试 $.ajaxSetup({ headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') } }); $.ajax({ url: "/map", type: 'POST', data: {}, success: function (data) { console.log("AJAX END"); } }); 只是一个问题,但是一切正常。只需尝试使用返回的数据即可。

"<script>console.log('NewChart funtion called');</script>"