Laravel 和 Ajax 根据请求返回 404,即使 url、路由器和控制器指向同一个地方
Laravel and Ajax returning 404 on request even though the url, router and controller are pointing to the same place
如您所见,一切都已正确路由,我还有其他功能可以做类似的事情并且工作正常,但我不断收到此错误:
POST http://localhost:8000/apagados/4 404 (Not Found)
DELETE http://localhost:8000/apagados/4 404 (Not Found)
//Buttons
<button id="{{'botRestaurarProjeto'.$apagado['id']}}" value="{{$apagado['id']}}" class="botRestaurarProjeto rounded bg-blue-300 text-white p-2">Restaurar</button>
<button id="{{'botEliminarProjeto'.$apagado['id']}}" value="{{$apagado['id']}}" class="botEliminarProjeto rounded bg-red-700 text-white p-2">Excluir</button>
<script>
$(document).on("click", ".botRestaurarProjeto", function () {
let id = $(this).val();
$.ajax({
method: 'POST',
url: "apagados/"+id,
data: {
"id": id,
},
success: function(result) {
location.reload();
},
error: function(jqXHR, testStatus, error) {
// console.log(jqXHR.responseText);
console.log(testStatus);
console.log(error);
}
});
});
//AJAX
$(document).on("click", ".botEliminarProjeto", function () {
let id = $(this).val();
if(confirm("Deseja apagar definitivamente?") == true){
$.ajax({
method: 'DELETE',
url: "apagados/"+id,
data: {
"id": id,
_method: 'DELETE'
},
success: function() {
$("#lixo"+id).hide();
},
error: function(jqXHR, testStatus, error) {
console.log(jqXHR.responseText);
}
});
}
});
</script>
//ProjetoController
public function eliminar($id)
{
$projeto = Projeto::find($id)->withTrashed();
$projeto->forceDelete();
}
public function restaurar($id)
{
$projeto = Projeto::find($id)->withTrashed();
$projeto->restore();
}
//Router
Route::delete('apagados', [ProjetoController::class, 'eliminar'])->name('posts.eliminar');
Route::post('apagados', [ProjetoController::class, 'restaurar'])->name('posts.restaurar');
http://localhost:8000/apagados/4
不是有效路线,正如您指定的那样:
Route::delete('apagados', [ProjetoController::class, 'eliminar'])->name('posts.eliminar');
Route::post('apagados', [ProjetoController::class, 'restaurar'])->name('posts.restaurar');
所以,有效的 URL 是 http://localhost:8000/apagados
。如果您希望它按预期工作,您必须将路线更改为:
Route::delete('apagados/{id}', [ProjetoController::class, 'eliminar'])->name('posts.eliminar');
Route::post('apagados/{id}', [ProjetoController::class, 'restaurar'])->name('posts.restaurar');
详细了解 Route
。
如您所见,一切都已正确路由,我还有其他功能可以做类似的事情并且工作正常,但我不断收到此错误:
POST http://localhost:8000/apagados/4 404 (Not Found)
DELETE http://localhost:8000/apagados/4 404 (Not Found)
//Buttons
<button id="{{'botRestaurarProjeto'.$apagado['id']}}" value="{{$apagado['id']}}" class="botRestaurarProjeto rounded bg-blue-300 text-white p-2">Restaurar</button>
<button id="{{'botEliminarProjeto'.$apagado['id']}}" value="{{$apagado['id']}}" class="botEliminarProjeto rounded bg-red-700 text-white p-2">Excluir</button>
<script>
$(document).on("click", ".botRestaurarProjeto", function () {
let id = $(this).val();
$.ajax({
method: 'POST',
url: "apagados/"+id,
data: {
"id": id,
},
success: function(result) {
location.reload();
},
error: function(jqXHR, testStatus, error) {
// console.log(jqXHR.responseText);
console.log(testStatus);
console.log(error);
}
});
});
//AJAX
$(document).on("click", ".botEliminarProjeto", function () {
let id = $(this).val();
if(confirm("Deseja apagar definitivamente?") == true){
$.ajax({
method: 'DELETE',
url: "apagados/"+id,
data: {
"id": id,
_method: 'DELETE'
},
success: function() {
$("#lixo"+id).hide();
},
error: function(jqXHR, testStatus, error) {
console.log(jqXHR.responseText);
}
});
}
});
</script>
//ProjetoController
public function eliminar($id)
{
$projeto = Projeto::find($id)->withTrashed();
$projeto->forceDelete();
}
public function restaurar($id)
{
$projeto = Projeto::find($id)->withTrashed();
$projeto->restore();
}
//Router
Route::delete('apagados', [ProjetoController::class, 'eliminar'])->name('posts.eliminar');
Route::post('apagados', [ProjetoController::class, 'restaurar'])->name('posts.restaurar');
http://localhost:8000/apagados/4
不是有效路线,正如您指定的那样:
Route::delete('apagados', [ProjetoController::class, 'eliminar'])->name('posts.eliminar');
Route::post('apagados', [ProjetoController::class, 'restaurar'])->name('posts.restaurar');
所以,有效的 URL 是 http://localhost:8000/apagados
。如果您希望它按预期工作,您必须将路线更改为:
Route::delete('apagados/{id}', [ProjetoController::class, 'eliminar'])->name('posts.eliminar');
Route::post('apagados/{id}', [ProjetoController::class, 'restaurar'])->name('posts.restaurar');
详细了解 Route
。