尝试删除某些内容时出现Ajax错误

时间:2018-04-14 16:08:00

标签: json ajax laravel

尝试创建删除选项时出现以下错误:

POST 419 (unknown status)

AJAX ERROR: {readyState: 4, getResponseHeader: ƒ, getAllResponseHeaders: ƒ, setRequestHeader: ƒ, overrideMimeType: ƒ, …}

我想知道代码有什么问题?我是AJAX和JSON的新手,所以我不确定它出了什么问题,但我觉得有一件小事可以修复它。

$('[data-js-type=modal-submit]').on('click', function(e) {
    $.ajax({
        url: "deleteCategory",
        method: "POST",
        dataType: "json",
        data: { id: $("[data-js=open-remove]").find('span').attr('id') },
        success: function(result) {
            console.log("Success : ", result);
            if (result.Success) {
                //Reload the Page 
                document.location.reload(true);
            } else if (result.Error) {
                console.log('Error From the Sever ', result.Error);
            }
        },
        error: function(error) {
            console.log("AJAX ERROR: ", error);
        }
    });
});

Route::post('/deleteCategory', 'CategoryController@removeCategory')->name('category.delete');

    public function removeCategory(Request $request) {
        //Find the Category 
        $category = Category::findOrFail($request->id);

        //Delete the Category 
        $category->delete();

        //Session Message 
        session()->flash('Success', 'Categorie: ' . $category->name . ' is removed');

        return json_encode(['Success' => 'Categorie: ' . $category->name . ' is 
        removed']);
   }

1 个答案:

答案 0 :(得分:0)

与GET请求不同,laravel中的POST / PUT / DELETE / CREATE请求要求您在请求中传递CSRF令牌 - 这是419错误的最常见原因:

$.ajax({
    ...
    data: {
        '_token': '{{ csrf_token() }}'
        ...
    }
});

或者,您可以在所有请求的标题中设置它:

$.ajaxSetup({
    headers: {
        'X-CSRF-TOKEN': '{{ csrf_token() }}'
    }
});

如果此Javascript代码不在刀片中,您可以将其转储到刀片中的某个位置,可能是<meta>标记并通过jQuery访问它:

<meta name="csrf_token" content="{{ csrf_token() }}">
var token = $('meta[name="csrf_token"]').attr('content');

最后一个选项,我不建议在app\Http\Middleware\VerifyCsrfToken中禁用对此路线的检查:

protected $except = [
    'deleteCateogory'
];