【问题标题】:Calling different functions with AJAX from one controller LARAVEL从一个控制器 LARAVEL 使用 AJAX 调用不同的函数
【发布时间】: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 中从我的控制器定义特定的功能路由?

【问题讨论】:

    标签: ajax laravel routes


    【解决方案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】:

      你不能让你的路线发生碰撞

      【讨论】:

        猜你喜欢
        • 2014-11-18
        • 1970-01-01
        • 2019-04-12
        • 2014-05-16
        • 2018-12-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-20
        相关资源
        最近更新 更多