【发布时间】: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