从一个控制器 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 调用不同的函数的主要内容,如果未能解决你的问题,请参考以下文章

laravel,从输入到控制器功能的ajax调用500错误

ajax成功后用数据调用另一个控制器后的Laravel

如何从 laravel 中的 ajax 调用中获取值

Laravel Ajax 调用 url 到控制器

如何调用ajax从数据库中检索数据

如何将数据从ajax get方法发送到laravel中的控制器?