如何在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);
}
我正在使用 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);
}