从一个控制器 LARAVEL 使用 AJAX 调用不同的函数
Posted
技术标签:
【中文标题】从一个控制器 LARAVEL 使用 AJAX 调用不同的函数【英文标题】:Calling different functions with AJAX from one controller LARAVEL 【发布时间】:2020-10-17 10:21:34 【问题描述】:我在一个控制器中有几个功能,例如:
public function cruise($id)...
public function block($id)...
在 web.php 中我添加了路由:
Route::post('/profile/cruise', 'UtilityController@cruise');
Route::post('/profile/block', 'UtilityController@block');
在刀片中的 ajax 中:
function block()
$.ajax(
type: 'POST',
url: "route('profile', $user->id)", // PROBLEM HERE
dataType: 'JSON',
data: formData: $data,
success: function ($data)
console.log('status = ' + status);
,
error: function (json)
console.log(json);
,
)
如何在 ajax 中从我的控制器定义特定的功能路由?
【问题讨论】:
【参考方案1】:问题是你有 2 个不同的控制器方法的相同路由
Route::post('/profile/cruise', 'UtilityController@cruise');
Route::post('/profile/block', 'UtilityController@block');
当你写 Route::post('/profile/cruise',...
这部分 between_curly_braces
是一个通配符......换句话说,它只是 laravel 将分配给你发送的值的变量的名称......
在您的情况下,它是$user->id
,无论您做什么,它总是会在您的路由文件中与该结构 post('/profile/
对应的第一条路由命中
为了让它工作,以便您可以在控制器中使用不同的方法,您必须分开路由以使用不同的方法。在路线文件中制作这两条路线:
Route::post('/profile-cruise/cruise', 'UtilityController@cruise')->name('profile.cruise');
Route::post('/profile-block/block', 'UtilityController@block')->name('profile.block');
并在 ajax 函数中点击想要的路线,例如:
function cruise()
$.ajax(
type: 'POST',
url: "route('profile.cruise', $user->id)",
dataType: 'JSON',
data: formData: $data,
success: function ($data)
console.log('status = ' + status);
,
error: function (json)
console.log(json);
,
)
对于巡航:
function block()
$.ajax(
type: 'POST',
url: "route('profile.block', $user->id)",
dataType: 'JSON',
data: formData: $data,
success: function ($data)
console.log('status = ' + status);
,
error: function (json)
console.log(json);
,
)
【讨论】:
【参考方案2】:你不能让你的路线发生碰撞
【讨论】:
以上是关于从一个控制器 LARAVEL 使用 AJAX 调用不同的函数的主要内容,如果未能解决你的问题,请参考以下文章