如何限制Laravel 5.2中每个页面的ajax调用?

时间:2016-07-29 07:29:53

标签: ajax laravel laravel-5.2 laravel-routing

我正在使用Laravel 5.2,有一些ajax调用,它们是每个页面上的调用。现在我只想ajax调用所需的页面。

我的路线

Route::auth();    
Route::get('/', 'Auth\AuthController@getLogin');
Route::post('auth/login', 'Auth\AuthController@postLogin');
Route::get('users/client', 'ClientController@showClients');
Route::get('users/client/add', 'ClientController@addClient');
Route::get('dash/manage_graph', 'BoardController@showPowerManage');
// My ajax call 
Route::get('dash/manage_chart/chart/{request}', 'DashboardController@powerChart');
Route::get('dash/manage/chart/{request}', 'DashboardController@powerChart');

我的data.js文件

$(document).ready(function() {
$.getJSON('dash/manage_chart/chart/' + request, function (data) {
        $('#dg_hours').html(data);
    });
$.getJSON('dash/manage/chart' + request, function (data) {
        $('#dg_sec').html(data);
    });
});

以上是我的路线。在我的路线中,我没有使用任何中间件。现在我面临的问题是我的每个页面上的ajax调用加载。由于加载ajax,我的单页加载时间超过50秒。现在我不知道如何处理这个问题。请建议我。

1 个答案:

答案 0 :(得分:3)

执行:

$.getJSON('dash/manage_chart/chart/' + request, function (data) {
   $('#dg_hours').html(data);
});
每当加载HTML页面时,

将自动执行AJAX调用。这就是为什么总是要进行AJAX调用。

相反,你应该这样做:

var getPowerChart = function(request, data) {
    $.getJSON('dash/manage_chart/chart/' + request, function (data) {
        $('#dg_hours').html(data);
    });
}

只有在需要进行相应的AJAX调用时才应调用getPowerChart(request, data)

附加说明:由于您无法创建新的JS文件,我想最简单的方法是将数据页属性添加到<body>标记中,例如,在Javascript中执行此操作:

var getPowerChart = function(request, data) {
    $.getJSON('dash/manage_chart/chart/' + request, function (data) {
        $('#dg_hours').html(data);
    });
}

if ($('body').data('page') == 'your-page') {
    var request = '...',
        data = '...';

    getPowerChart(request, data);
}