惯性 - 重新加载使用 POST 创建的页面 url 显示 GET 405(方法不允许)
Inertia - Reloading page url created with POST shows GET 405 (Method Not Allowed)
我想加载一个新的 vue component
并在 URL
中显示它的 id
。可以这样做:
<template>
<button @click="submit">Load new page with id in url</button>
</template>
<script>
import {Inertia} from "@inertiajs/inertia";
const submit = () => {
const id = 1
Inertia.post('/admin/kreationen/bearbeiten/' + id, {id: id})
}
</script>
在 laravel side (web.php)
上:
Route::post('/admin/kreationen/bearbeiten/{id}', function (Request $request) {
return inertia('backend/cms-gallery-edit', ['id' => $request->id]);
});
问题是,当我重新加载页面时,显示此错误:
GET http://127.0.0.1:8000/admin/kreationen/bearbeiten/1 405 (Method Not Allowed)
我明白为什么会出现这个错误,但是我怎样才能在新的 url
中显示 id
而不会出现这个错误?
Edit
:
我不知道为什么我原来的方法昨天不起作用,但现在却起作用了。对于任何感兴趣的人:
<inertia-link :href="'/admin/kreationen/bearbeiten/' + data['id']">
<button>Load new page with id in url</button>
</inertia-link>
后端:
Route::get('/admin/kreationen/bearbeiten/{id}', function (Request $request) {
return inertia('backend/cms-gallery-edit', ['id' => $request->id]);
});
可能您需要使用 GET 请求而不是 POST 请求。如果是,则只需将您的 ID 添加到 url,然后将 GET method
传递给参数:
const id = 1
Inertia.visit('/admin/kreationen/bearbeiten/' + id, {method: 'get'})
Laravel url 中的后端保持原样,但收到的参数仅为 $id
并且方法需要更改为 GET
:
Route::get('/admin/kreationen/bearbeiten/{id}', function ($id) {
return inertia('backend/cms-gallery-edit', ['id' => $id]);
});
当您尝试通过 GET 方法加载 POST 方法 url 时发生 405 (Method Not Allowed)
,反之亦然。
所以首先当你点击的时候,post方法可以正常工作,但是当你重新加载页面时,它被认为是GET方法(就像直接打开页面一样)。因此收到 405 错误是公平的,如果您能够根据需要使用 GET 方法,则使用 GET 方法(如果您可以接受用户在没有任何形式的情况下直接访问页面 posted)。
如果没有,那么您可能首先在不同的路由中执行 POST 请求,然后将用户重定向到另一条路由(以防止 re-sending 在重新加载页面时形成表单,但要打开另一个页面一些表单数据(当然它必须保存在某个地方,比如会话或数据库))
我想加载一个新的 vue component
并在 URL
中显示它的 id
。可以这样做:
<template>
<button @click="submit">Load new page with id in url</button>
</template>
<script>
import {Inertia} from "@inertiajs/inertia";
const submit = () => {
const id = 1
Inertia.post('/admin/kreationen/bearbeiten/' + id, {id: id})
}
</script>
在 laravel side (web.php)
上:
Route::post('/admin/kreationen/bearbeiten/{id}', function (Request $request) {
return inertia('backend/cms-gallery-edit', ['id' => $request->id]);
});
问题是,当我重新加载页面时,显示此错误:
GET http://127.0.0.1:8000/admin/kreationen/bearbeiten/1 405 (Method Not Allowed)
我明白为什么会出现这个错误,但是我怎样才能在新的 url
中显示 id
而不会出现这个错误?
Edit
:
我不知道为什么我原来的方法昨天不起作用,但现在却起作用了。对于任何感兴趣的人:
<inertia-link :href="'/admin/kreationen/bearbeiten/' + data['id']">
<button>Load new page with id in url</button>
</inertia-link>
后端:
Route::get('/admin/kreationen/bearbeiten/{id}', function (Request $request) {
return inertia('backend/cms-gallery-edit', ['id' => $request->id]);
});
可能您需要使用 GET 请求而不是 POST 请求。如果是,则只需将您的 ID 添加到 url,然后将 GET method
传递给参数:
const id = 1
Inertia.visit('/admin/kreationen/bearbeiten/' + id, {method: 'get'})
Laravel url 中的后端保持原样,但收到的参数仅为 $id
并且方法需要更改为 GET
:
Route::get('/admin/kreationen/bearbeiten/{id}', function ($id) {
return inertia('backend/cms-gallery-edit', ['id' => $id]);
});
当您尝试通过 GET 方法加载 POST 方法 url 时发生 405 (Method Not Allowed)
,反之亦然。
所以首先当你点击的时候,post方法可以正常工作,但是当你重新加载页面时,它被认为是GET方法(就像直接打开页面一样)。因此收到 405 错误是公平的,如果您能够根据需要使用 GET 方法,则使用 GET 方法(如果您可以接受用户在没有任何形式的情况下直接访问页面 posted)。
如果没有,那么您可能首先在不同的路由中执行 POST 请求,然后将用户重定向到另一条路由(以防止 re-sending 在重新加载页面时形成表单,但要打开另一个页面一些表单数据(当然它必须保存在某个地方,比如会话或数据库))