【发布时间】:2023-03-25 19:02:01
【问题描述】:
使用 Lumen,我正在显示“Tickets”。这是我的Tickets.blade.php:
@foreach($tickets as $ticket)
<div>
<p>{{ $ticket->id }}</p>
<p>{{ $ticket->content }}</p>
<button onclick="deleteTicket({{$ticket->id}})">Delete</button>
</div>
@endforeach
所以本质上,每次有人点击删除,都会触发这个脚本:
<script>
function deleteTicket(id) {
jQuery.ajax({
type: "post",
url: "/tickets/deleteTicket",
data: id,
dataType: "text",
success: function () {
console.log('deleted!');
}
});
}
</script>
在我的routes.php,我有这个:
$app->post('tickets/deleteTicket','TicketsController@deleteTicket');
最后,在我的TicketsController.php 中,我有:
public function deleteTicket($id) {
$ticket = Ticket::find($id);
$ticket->delete();
return redirect('/tickets');
}
我按下按钮(控制台)时遇到的问题:
POST http://example.com/tickets/deleteTicket 404(未找到)
我不明白我做错了什么,以及为什么找不到该方法。有人可以帮忙吗?
EDIT- 我已将routes.php 更改为:
$app->get('tickets/deleteTicket/{id}','TicketsController@deleteTicket');
我的脚本看起来一样,但我将“类型”更改为 get 而不是 post。
如果我访问此站点:http://mysite/tickets/deleteTicket/1,票证将被删除,并重定向到tickets 页面。但是如果点击按钮,就会出现这个错误:
此时,我认为我只需将 AJAX 调用修改为正确的 URL,但我想确保安全是一个问题。
【问题讨论】:
-
更改路线:$app->post('/tickets/deleteTicket','TicketsController@deleteTicket');
-
@hizbul25 这正是我的问题。
-
我要改成什么?
-
这不完全是你的问题。 $app->post('/tickets/deleteTicket','TicketsController@deleteTicket');我添加了一个'/'刚刚开始的路线。试试这个。最好进来聊天。
-
@hizbul25 我确实尝试在
routes.php的 URL 开头添加一个“/”。仍然没有变化。
标签: php laravel lumen lumen-5.2 lumen-routing