Laravel Ajax URL在生产服务器上不起作用

时间:2018-12-12 17:23:39

标签: javascript ajax laravel deployment routing

我在Laravel Project上有这个ajax请求(这是一个简单的版本,但是正在运行):

$.ajax({
            method: 'POST', // Type of response and matches what we said in the route
            url: '/admin/lessons/addMember/licenseMemberId', // This is the url we gave in the route
            data: {'licenseMemberId' : id},
            success: function(response){ 
                console.log(response);

                if ($.trim(response)) {
                    var actualMembers = document.getElementById("actual-member");
                }
                $('#membersModal').modal('hide');
            },  
        });

当我在本地工作并且使用php artisan服务时,ajax调用有效,但是当我部署到我的生产服务器时则不行(因为路径/ admin / lessons / addMember / licenseMemberId不是服务器中的完整路径) 。 最好的方法应该是使用路线,但我不知道如何。 这是路由表:

web                                          |
|        | POST      | admin/lessons/addMember/{licenseMemberId}                     | lessons.addMember               | App\Http\Controllers\admin\LessonController@addMember  

有没有办法将laravel路线与抛物线一起使用?如果没有,我该怎么办?

3 个答案:

答案 0 :(得分:2)

您不应该像在Vanila php或html中那样使用Laravel中的URL,而应使用URL function,此功能可确保您的路由正确地指向项目根,在这种情况下,您可以像这样

$.ajax({
        method: 'GET', 
        url: '{{URL::to('/admin/lessons/addMember/')}}' + id, 
// Laravel will print the url and you just need to concat your id to it
        success: function(response){ 
            console.log(response);

            if ($.trim(response)) {
                var actualMembers = document.getElementById("actual-member");
            }
            $('#membersModal').modal('hide');
        },  
    });

请注意,我在使用GET时似乎正在检索数据而不是发布数据,但是,如果需要发布数据,则MisaGH答案是解决之道

答案 1 :(得分:1)

在路由中不接收参数。

URL应为:/admin/lessons/addMember

$.ajax({
            method: 'POST', // Type of response and matches what we said in the route
            url: '/admin/lessons/addMember', // This is the url we gave in the route
            data: {'licenseMemberId' : id},
            success: function(response){ 
                console.log(response);

                if ($.trim(response)) {
                    var actualMembers = document.getElementById("actual-member");
                }
                $('#membersModal').modal('hide');
            },  
        });

和控制器:

$member_id = request('licenseMemberId');

答案 2 :(得分:0)

真正的路线是

admin/lessons/addMember/{licenseMemberId}   

因此在javascript中,您需要调用

'/admin/lessons/addMember/' + id 

其中id是一个变量。在控制器中,您可以使用ID获取

Input::get('licenseMemberId') or $request->get('licenseMemberId');