[英]How to pass an array of variables from a laravel controller to my ajax function
[英]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.