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

How to restrict ajax call on every page in Laravel 5.2?

我正在使用 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 秒。现在我不知道该如何处理。请建议我。

正在做:

$.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);
}