簡體   English   中英

如何在laravel 4中從控制器到ajax函數獲取數組

[英]how to get an array from controller to ajax function in laravel 4

嘿,我正在使用laravel 4,我還是所有這方面的初學者。 我要做的是從控制器到ajax函數獲取數據數組,以幫助我繪制圖表

這是我的控制器功能

  public function getAPI() $stats = DB::table('reponse') ->groupBy('date') ->orderBy('date', 'ASC') ->remember(1440) ->get([ DB::raw('Date(created_at) as date'), DB::raw('etatSatisfaction as value') ]); return $stats; } 

這是我的觀點,我想用數組中的數據替換靜態數據

 <script > var chartData1 = []; generateChartData(); function generateChartData() { var firstDate = new Date(); firstDate.setDate(firstDate.getDate() - 500); firstDate.setHours(0, 0, 0, 0); for (var i = 0; i < 500; i++) { var newDate = new Date(firstDate); newDate.setDate(newDate.getDate() + i); var a1 = Math.round(Math.random() * (40 + i)) + 100 + i; var b1 = Math.round(Math.random() * (1000 + i)) + 500 + i * 2; chartData1.push({ date: newDate, value: a1, volume: b1 }); } } var chart = AmCharts.makeChart("chartdiv", { type: "stock", "theme": "none", dataSets: [{ title: "first data set", fieldMappings: [{ fromField: "value", toField: "value" }, { fromField: "volume", toField: "volume" }], dataProvider: chartData1, categoryField: "date" }, ], panels: [{ showCategoryAxis: false, title: "Value", percentHeight: 70, stockGraphs: [{ id: "g1", valueField: "value", comparable: true, compareField: "value", balloonText: "[[title]]:<b>[[value]]</b>", compareGraphBalloonText: "[[title]]:<b>[[value]]</b>" }], stockLegend: { periodValueTextComparing: "[[percents.value.close]]%", periodValueTextRegular: "[[value.close]]" } }, { title: "Volume", percentHeight: 30, stockGraphs: [{ valueField: "volume", type: "column", showBalloon: false, fillAlphas: 1 }], stockLegend: { periodValueTextRegular: "[[value.close]]" } } ], chartScrollbarSettings: { graph: "g1" }, chartCursorSettings: { valueBalloonsEnabled: true, fullWidth:true, cursorAlpha:0.1 }, periodSelector: { position: "left", periods: [{ period: "MM", selected: true, count: 1, label: "1 month" }, { period: "YYYY", count: 1, label: "1 year" }, { period: "YTD", label: "YTD" }, { period: "MAX", label: "MAX" }] }, dataSetSelector: { position: "left" } }); chart.addListener('rendered', function (event) { var dataProvider = chart.dataSets[0].dataProvider; $( ".amChartsPeriodSelector .amChartsInputField" ).datepicker({ dateFormat: "dd-mm-yy", minDate: dataProvider[0].date, maxDate: dataProvider[dataProvider.length-1].date, onClose: function() { $( ".amChartsPeriodSelector .amChartsInputField" ).trigger('blur'); } }); }); </script> @stop 

任何人都可以幫忙嗎

由於已經定義了控制器功能,因此現在需要指定此操作的路由。

簡而言之, 路由是瀏覽器發出的請求與控制器方法進行通信的方式。

routes.php文件中(在Laravel 5中,您可以在App \\ Http \\ routes.php中找到它)

您可以創建一條新路線。 檢查Laravel路由文檔

Route::post('/FunctionAPI', 'MyController@getAPI');

然后在您的JS文件中,您可以創建一個像這樣的方法

public function getData()
{
    $.ajax(
    {
        type :"POST",
        url: "/FunctionAPI":
        success:function(data)
        {
            for(var index = 0; index < data.length; index++)
            {
                //Clean the array in case you need to
                charData1 = [];

                chartData1.push({
                  date: data[index].date,
                  value: data[index].value,
                  volume: data[index].volume
                });         
            }
        }
    })
}

成功函數中的data參數是您的getAPI函數將返回的內容。

注意

您應該知道數據輸入的格式,這樣您就可以知道如何填充圖表。 (如果您不知道)

更新

為了填充您的圖表,我假設您的數據是以這種方式檢索的:

[
    {
       date: "2014-04-04",
       value: "Some Value",
       volume: "Some Volume"
    },
    {
       date: "2014-04-04",
       value: "Some Value",
       volume: "Some Volume"
    },
    {
       date: "2014-04-04",
       value: "Some Value",
       volume: "Some Volume"
    },
    {
       date: "2014-04-04",
       value: "Some Value",
       volume: "Some Volume"
    }    
]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM