【问题标题】:Vuejs: 400 BAD REQUEST on patch ajax with vue-resoure and LaravelVue Js:在使用 vue-resource 和 Laravel 的补丁 ajax 上出现 400 BAD REQUEST
【发布时间】:2016-11-18 13:53:09
【问题描述】:

我不知道我做错了什么,但是我通过 Vue 资源对我的 Ajax 补丁请求的请求 URL 正在获取:

400 错误请求

但这只是在本地环境中!!!当我将它推送到服务器时,它就可以工作了!

有人知道为什么吗?

这是我的要求:

var id = thing.id;
            this.$http.patch('/api/things/' + id, thing).then(function(data){
                console.log('edited to: '+data);
});

在开发工具中查看“网络”选项卡时,请求参数应全部正确。

这是我的路线:

Route::resource('/api/things','ThingsPanelController');

这是我的控制器:

public function update(Request $request, $id)
{
    Thing::findOrFail($id)->update([
        'body'=>$request->body,
    ]);
    return Response::json($request->all());
}

可能是因为我添加的 ID 是 'api/things' + id,它在路由中将其视为不是通配符,而是作为字符串! ?

这是我使用的表格。我阻止默认并有 ajax 请求,所以表单操作甚至不应该是相关的......

<form action="update" @submit.prevent="doneEdit(thing)">
    <input type="hidden" name="_method" value="PATCH">
    <input type="text"
        v-model="thing.body"
        v-thing-focus="thing == editedThing"
        @blur="doneEdit(thing)"
        @keyup.esc="cancelEdit(thing)"
    >
</form>

【问题讨论】:

  • 1.对 laravel 不是很熟悉,所以不确定这是否是正确的方向,但是:您是否可能需要在路由中指定请求的类型(在这种情况下为patch)? 2. 会不会是因为这个方法在vue-component里面,而不是vue-instance里面?我确定不是这样的。
  • 1) 我见过人们不这样做。我不确定我的情况有什么问题...... : (
  • 删除了我的答案,因为它不相关,我明白你的意思。试试看这里laracasts.com/discuss/channels/vue/…
  • @DevinGray 如果我在网络选项卡中检查我的 ajax 请求,我看到该请求是用所有数据正确发出的。我已经阅读了您发送给我的线程,但我没有看到任何类似的问题,因为我的数据在请求中正确发送,但它只输出 400 bad request...
  • 您可以将表格添加到问题中吗?

标签: ajax laravel laravel-5.2 patch vue.js


【解决方案1】:

检查您的本地服务器以及您的实时服务器上是否存在问题。

在这种情况下,问题仅出在本地服务器上。然后这样做:
停止工匠的发球,并执行:php artisan cache:clear

然后再试一次:php artisan serve,问题应该解决了。

问题可能是由 CodeKit 之类的程序引起的。即使您的 php artisan serve 将在 ip 8000 上提供服务,CodeKit 也会出于自动重新加载的原因更改此设置。这会弄乱 ajax 调用 uri。

【讨论】:

    猜你喜欢
    • 2016-10-06
    • 1970-01-01
    • 2020-05-09
    • 1970-01-01
    • 1970-01-01
    • 2011-05-31
    • 2019-06-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多