【问题标题】:My Ajax keeps returning 419 and 500 error status我的 Ajax 不断返回 419 和 500 错误状态
【发布时间】:2019-09-11 02:24:33
【问题描述】:

我正在制作一个由 Ajax 调用的表单,并尝试将表单配置为使用 Ajax 提交。该表单应该通过 route('ruangrapat.store) 提交数据。但是每次我提交表单时,当我在 Ajax 中不使用 csrf_token() 以及在 Ajax 中使用 csrf_token() 时,它都会返回 419 状态。它总是返回 500 内部服务器错误。有人可以帮我解决这个问题吗?我一直在阅读我在互联网上找到的几乎所有讨论,但仍然没有答案。

也许我在我的代码中遗漏了一些重要的东西。请检查我的代码。

//ajax
$(document).ready(function(){
             $('#form-ruangrapat').on('submit',function(e){

            e.preventDefault();
             var formdata=$('#form-ruangrapat').serialize();//should i do this??
//if i should take the value of inputs 1 by 1,please show me the proper way

             var token="{!!csrf_token()!!}"
            $.ajax({ 
                url:"{{route('ruangrapat.store')}}",
                data: {formData:formdata,_token:token},
                type:'post',
                success:function(result){
                    $('#result').html(result);
                }
            });
        });
        });


//controller
public function store(Request $request)
    {
        $data = new Ruangrapat();
       ...
        $data->contact = $request->get('contact');
        $data->save();
        return view('ajax-result.ruangrapat.index')->with('status', 'Ruang rapat baru berhasil ditambahkan!');
//is this return value correct??

    }

//route
Route::resource('ruangrapat', 'RuangrapatController');

【问题讨论】:

  • 您的路线 {{route('ruangrapat.store')}} 在该控制器中必须有一些错误。签入 storage/logs/current_date.log 你会得到那里列出的错误。

标签: javascript ajax laravel laravel-5


【解决方案1】:

我也遇到了同样的问题,419与csrf令牌匹配,当你修复它时,请求转到服务器,内部服务器错误500说存储时有问题,所以重新查看存储功能在控制器中,并确保函数中的所有过程都是正确的。

【讨论】:

    【解决方案2】:

    第一次推荐

    要进行任何 ajax 请求,建议将 CSRF 令牌添加到 ajax 请求的标头中

    $.ajaxSetup({
        headers: {
            'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
        }
    });
    

    As advised by laravel documentation

    第二次推荐

    要查看发送的 ajax 请求,我建议让控制器将数据返回给您并通过 Web 控制台查看。

    $(document).ready(function(){
        $('#form-ruangrapat').on('submit',function(e){
            e.preventDefault();
            var formdata=$('#form-ruangrapat').serialize();
            var token="{!!csrf_token()!!}";
            $.ajax({
                url:"{{route('ruangrapat.store')}}",
                data: {formData:formdata,_token:token},
                type:'post',
                dataType:'JSON',
                //You can use sucess or done, personally i like more done
            }).done(function (data) {
                console.log(data)
            });
        });
    });
    

    在控制器中

    public function store(Request $request)
    {
        return response()->json($request->input());
    }
    

    其他选项是使用浏览器的网络监视器并查看发送的变量。

    【讨论】:

      猜你喜欢
      • 2015-09-03
      • 1970-01-01
      • 2019-05-18
      • 2015-10-13
      • 1970-01-01
      • 2018-03-14
      • 1970-01-01
      • 2023-02-25
      • 2019-08-05
      相关资源
      最近更新 更多