簡體   English   中英

我的Ajax不斷返回419和500錯誤狀態

[英]My Ajax keeps returning 419 and 500 error status

我正在制作一個由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');

我有同樣的問題,419與csrf令牌匹配,當你修復它時,請求轉到服務器所以,內部服務器錯誤500說存儲時有問題,所以重新查看控制器中的存儲功能和確保函數中的所有過程都正確。

第一次推薦

要發出任何ajax請求,建議將CSRF令牌添加到ajax請求的標頭中

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

正如laravel文檔所述

第二次推薦

要查看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());
}

其他選項是使用瀏覽器的網絡監視器並查看發送的變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM