【发布时间】:2017-09-23 15:57:14
【问题描述】:
我正在尝试创建一个 DOM 事件,其中用户单击表格行的标题 (th) 单元格将从提供表格数据的数据库中删除相应的行。
此代码按预期的无框架工作,只需将包含行 ID 信息的 AJAX 从 index.php 发布到 delete.php,然后运行 sql 查询。
但是,在将站点移至 Laravel 后,我遇到了错误:
POST http://sandbox.app/delete 419 (unknown status)
负责附加删除事件并通过 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');
});
【问题讨论】:
标签: javascript php jquery ajax laravel-5