首页 > 解决方案 > laravel-使用ajax在控制器中请求为空

问题描述

我正在使用 laravel 6.0,并且正在构建 crud 应用程序。我在视图文件中有以下 jquery 代码

function updaterecord(id) {
        $('#modalupdate').on('submit', function (e) {
            e.preventDefault();
            $.ajax({
                url: 'update/'+id,
                method: 'post',
                success: function (res) {
                    console.log(res);
                }
            })
        });
    }

这是控制器中的代码

public function update(Request $request, $id='') {
            $country = $request->input('countryname');
            $sortname = $request->input('sortname');
            $phonecode = $request->input('phonecode');
            //return $country.$sortname.$phonecode;
        return $request;
//            DB::table('countries')->where('id',$id)->update(
//                [
//                    'name' => $country,
//                    'sortname' => $sortname,
//                    'phonecode' => $phonecode,
//                ]);
    }

问题是 $request 返回空。如果我不使用 ajax,那么我将获得所有输入值。但我不知道为什么它不适用于 ajax 请求。我也在视图文件中添加了这一行

        headers: {
            'X-CSRF-TOKEN': '{!! csrf_token() !!}'
        }
    });

请帮我解决这个问题

标签: ajaxlaravel

解决方案


您没有传递表单数据。尝试这个:

function updaterecord(id) {
    $('#modalupdate').on('submit', function (e) {
        e.preventDefault();
        $.ajax({
            url: 'update/' + id,
            method: 'post',
            data: $(this).serialize();
            success: function (res) {
                console.log(res);
            }
        })
    });
}

推荐阅读