簡體   English   中英

開機自檢 <target url> 419(狀態未知)-無法在Laravel中發布數據

[英]POST <target url> 419 (unknown status) - can't post data in Laravel

我正在嘗試創建一個DOM事件,其中用戶單擊表行的標題( th )單元格將從提供表數據的數據庫中刪除相應的行。

通過僅將包含該行的ID信息的AJAX從index.php POST到delete.php,然后運行sql查詢,此代碼就可以在沒有框架的情況下工作了。

但是,將站點移至Laravel之后,我遇到了一個錯誤:

POST http://sandbox.app/delete 419 (unknown status)

負責附加delete事件並通過AJAX發布ID的JavaScript代碼:

    function attachDelete() {
        $("#mainTable tbody tr th").on("click", function(e){
            console.log(e.target.innerText + " was clicked");
            var token = $('meta[name="csrf-token"]').attr('content');
            var id_to_delete = e.target.innerText;
            $.ajax({
                headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')},
                type: 'POST',
                dataType: 'text',
                url: 'delete',
                data: { 
                    'id_to_delete': id_to_delete,
                    "_method": 'POST',
                    "_token": token 
                },
                success: function () {alert("Deleted!"); },
                failure: function() {alert("Error!");}
            });
        });
    }
    attachDelete();

console.log(e.target.innerText + " was clicked"); 熄滅。

但是,不會顯示success / error消息。

直接轉到http://sandbox.app/delete會打開一個Laravel錯誤窗口,其中包含很多文本,該部分突出顯示:

 protected function methodNotAllowed(array $others)
    {
        throw new MethodNotAllowedHttpException($others);
    }

在閱讀完StackOverflow相關問題的答案后,我添加了令牌變量。 這沒有幫助。

如果重要,路線:

Route::post('/delete', 'TasksController@delete');

控制器:

class TaskController extends Controller
{
    public function delete() 
    {
        include 'config.php';

        $stmt = $pdo->prepare('DELETE FROM food WHERE id = :id');
        $stmt->execute(['id' => $_POST['id_to_delete']]);
    }

}

delete()內的代碼過去只是舊的無框架站點中delete.php文件的內容,在該站點中一切正常。

我試圖通過創建delete.php視圖(使用與delete()函數相同的代碼)在沒有控制器的情況下進行操作。 但這並沒有什么不同:

Route::post('/delete', function () {
    return view('delete');
});

好吧,看來您是否在后端與POST通信。 因此,您應該在api.php而不是web.php上配置路由

放置與控制器關聯的路線

Route::post('/delete', 'TasksController@delete');

內部api.php文件。

暫無
暫無

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

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