Php 在Laravel中更新用户属性,通过按刀片视图上的按钮调用控制器上的函数,但不刷新页面

Php 在Laravel中更新用户属性,通过按刀片视图上的按钮调用控制器上的函数,但不刷新页面,php,laravel,laravel-blade,Php,Laravel,Laravel Blade,我有一个blade Laravel视图,在那里我有一个按钮,点击它我想更新一些用户属性。我在控制器中实现了一个方法,将值传递给该方法​​要在用户上报告和保存,但我不想更新页面或更改URL。正确的方法是什么 多谢各位 web.php Route::post('/updateUserPreference/{plan_compact_view}', [NutritionalPlanController::class, 'up dateUserPreference'])->name('update

我有一个blade Laravel视图,在那里我有一个按钮,点击它我想更新一些用户属性。我在控制器中实现了一个方法,将值传递给该方法​​要在用户上报告和保存,但我不想更新页面或更改URL。正确的方法是什么

多谢各位

web.php

Route::post('/updateUserPreference/{plan_compact_view}', [NutritionalPlanController::class, 'up
dateUserPreference'])->name('updateUserPreference');
刀片视图

@push('scripts')
    <script type="text/javascript">
        $(document).ready(function () {
            $('#btn_view_type').click(function (e) {
                //AJAX Call update user preference
                $.ajax({
                    url: 'updateUserPreference',
                    method: 'post',
                    dataType: 'JSON',
                    success: function () {
                        console.log("done");
                     
                    },error: function(xhr, ajaxOptions, thrownError){
                         console.log("error");
                    }
                });
            });
        });
    </script>
@endpush

现在控制台中的错误消息是:“200,parsererror,SyntaxError:JSON输入的意外结束”

需要更改ajax代码片段中的url以匹配routes文件中定义的url

您还需要获取route参数
plan\u compact\u view
的值,并将其附加到js代码段中的url中

@push('scripts')
    <script type="text/javascript">
        const planCompactView = 'get the value';

        $(document).ready(function () {
            $('#btn_view_type').click(function (e) {
                //AJAX Call update user preference
                $.ajax({
                    url: `/updateUserPreference/${planCompactView}`,
                    method: 'post',
                    dataType: 'JSON',
                    success: function () {
                        console.log("done");
                     
                    },error: function(xhr, ajaxOptions, thrownError){
                         console.log("error");
                    }
                });
            });
        });
    </script>
@endpush
@push('scripts')
const planCompactView='获取值';
$(文档).ready(函数(){
$(“#btn_视图_类型”)。单击(函数(e){
//AJAX调用更新用户首选项
$.ajax({
url:`/updateUserPreference/${planCompactView}`,
方法:“post”,
数据类型:“JSON”,
成功:函数(){
控制台日志(“完成”);
},错误:函数(xhr、ajaxOptions、thrownError){
控制台日志(“错误”);
}
});
});
});
@端推

按下按钮时,需要进行ajax调用clicked@Donkarnash非常感谢。我在使用ajax调用的控制台中遇到了这个错误:“加载资源失败:服务器响应状态为405(不允许使用方法)”请发布路由文件的代码,使用ajax调用和控制器的代码。如果不看一眼数据,就很难猜测是什么导致了错误code@DonkarnashDonewhitout头我有错误419比我添加了这个。但现在的错误是:“200,parsererror,SyntaxError:JSON输入的意外结束”,如请求的“更新2”中所报告的。请尝试使用非空对象获取数据:{foo:'bar},然后查看错误是否更改为One。我有同样的错误,把e.preventDefault()作为第一行包含在.click()中,只是为了确保正常提交不会发生。然后尝试删除数据类型:“JSON”,看看错误是否发生了变化。删除数据类型:JSON它可以工作!非常感谢。
@push('scripts')
    <script type="text/javascript">
        const planCompactView = 'get the value';

        $(document).ready(function () {
            $('#btn_view_type').click(function (e) {
                //AJAX Call update user preference
                $.ajax({
                    url: `/updateUserPreference/${planCompactView}`,
                    method: 'post',
                    dataType: 'JSON',
                    success: function () {
                        console.log("done");
                     
                    },error: function(xhr, ajaxOptions, thrownError){
                         console.log("error");
                    }
                });
            });
        });
    </script>
@endpush