我有一个Laravel / InertiaJS应用程序,我从Vue前端执行Axios请求来更新某些模型。在我的例子中,我有一个Proposal显示页面,其中还显示与该Proposal相关的Tasks。
我有一个Vue子组件,它执行Axios调用来更新特定任务:
const moveToNextStatus = (status) => {
console.log('run')
// update the status of the task using axios
axios.patch(`/data/tasks/${props.task.id}`, {
status: status
})
}
字符串
这是它所指的路线:
Route::patch('/data/tasks/{task}', [\App\Http\Controllers\TaskController::class, 'update'])->name('tasks.update');
型
然后,在我的LaravelTaskController中,这是我的update方法的样子:
public function update (Request $request, Task $task)
{
$task->update($request->all());
return redirect()->back();
}
型
出于某种原因,当Axios对PATCH /tasks/{task}的请求被触发时,它还会调用路由PATCH /proposals/{proposal},并尝试更新失败的建议。
也许这与从子组件重定向有关?有人能帮帮我吗?
1条答案
按热度按时间mnowg1ta1#
Inertia公司的文件说明:
303响应代码在PUT、PATCH或DELETE请求后重定向时,必须使用303响应代码,否则后续请求将不会被视为GET请求。303重定向与302重定向非常相似;然而,后续请求被显式地改变为GET请求.
如果您使用的是我们的官方服务器端适配器,所有重定向都将自动转换为303重定向。
您可以在此处的文档中找到此信息:https://inertiajs.com/redirects
它还希望您使用非标准的helper进行重定向,例如;
字符串
我不同意它,但它是-似乎它违反了网页状态代码标准,使用303时,页面还没有重定向在所有。