laravel - Vue axios 向错误的 URL 发出请求

标签 laravel vue.js routes resources axios

所以我遇到了这个奇怪的问题,如果我在 Vue 中通过 axios 发出 Put 请求,它会将它发送到错误的路由。

它是通过 Laravel API 资源进行的简单 CRUD 的一部分。获取和发布工作正常。

这是表格:

<form @submit.prevent="editType" method="post" class="mb-4">
            <label v-if="user.gender === 'man'" for="single_male">Enkel<input type="checkbox" name="type" :id="single_male" :value="types.single_male" v-model="checkedType" @change="showSaveButton = true"></label>
            <label v-if="user.gender === 'vrouw'" for="single_female">Enkel<input type="checkbox" name="type" :id="single_female" :value="types.single_female" v-model="checkedType" @change="showSaveButton = true"></label>
            <label v-if="user.gender === 'man'" for="double_male">Dubbel mannen<input type="checkbox" name="type" :id="double_male" :value="types.double_male" v-model="checkedType" @change="showSaveButton = true"></label>
            <label v-if="user.gender === 'vrouw'" for="double_female">Dubbel vrouwen<input type="checkbox" name="type" :id="double_female" :value="types.double_female" v-model="checkedType" @change="showSaveButton = true"></label>
            <label for="double_mix">Dubbel gemengd<input type="checkbox" name="type" :id="double_mix" :value="types.double_mix" v-model="checkedType" @change="showSaveButton"></label>
            <button type="submit" v-if="showSaveButton">Opslaan</button>
        </form>

我的更新函数:

 public function update(Request $request, $id)
    {
        $user_id = auth('api')->user()->id;

        $type = Type::where('user_id' ,'=', $user_id)->first();

        $type->single_male = $request->input('single_male');
        $type->single_female = $request->input('single_female');
        $type->double_male = $request->input('double_male');
        $type->double_female = $request->input('double_female');
        $type->double_mix = $request->input('double_mix');

        $type->save();

        return redirect()->back();
    }

我的方法:

editType() {
                let types = this.types;
                let data = {
                    single_male: this.single_male,
                    single_female: this.single_female,
                    double_male: this.double_male,
                    double_female: this.double_female,
                    double_mix: this.double_mix,
                };
                axios.put('/types/'+types.id, data)
                    .then(request => this.successfulEdit(request))
                    .catch(() => this.failed())
            },
            successfulEdit() {
                alert("Voorkeuren succesvol bijgewerkt!");
            }

还有我的路线:

    Route::apiresource('types','TypeController');

当我发出放置请求时,我可以在开发人员工具中看到它试图向当前 url 发出请求,这当然会出现 405 方法不允许错误。 当我将 axios 请求更改为仅 ('/types', data) 时,它确实遵循指定的路线,但当然也会给出 405 错误,因为 put 方法需要一个 id。硬编码为例如'/types/4/' 也会导致使用当前 url。

我是不是遗漏了什么或者出了什么问题?提前谢谢大家!

最佳答案

发现问题。 return redirect()->back(); 是罪魁祸首。谢谢大家!

关于laravel - Vue axios 向错误的 URL 发出请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56091936/

相关文章:

vue.js - 从 sequelize promise vue 设置数据属性值

javascript - 在 Vue 中更改 View

angularjs - 路由在 Angular 2 中不起作用

php - Laravel-Eloquent-Adding record to MySQL : Building dynamic eloquent insert command, 并在第一列返回 "Column Not Found"

database - Vue.js 和 Laravel 一次调用更新多行

php - Laravel 5 blade 在出现错误而不是抛出异常时显示空白页面

javascript - 如何从 ui-router statechange 返回 $state.current.name

php - 在原始查询中从 Laravel 5.2 DB 返回主键

javascript - Vue js 使用 Vuex 传播语法

node.js - 使用 Express 和 Nodejs 进行路由时出现 404 错误