Route::put('url/update',['as'=>'test.update', 'uses'=>'TestController@update']);
$.ajax({
url: 'url/update',
type: 'PUT',
dataType: 'json',
data: $inputs ,
success: function (data, textStatus, xhr) {
console.log(data);
},
error: function (xhr, textStatus, errorThrown) {
console.log('PUT error.', xhr, textStatus, errorThrown);
}
});
PUT http://localhost:80/url/update 405 (Method Not Allowed)
答案 0 :(得分:2)
将方法更改为' POST'并添加一个隐藏的元素' _method'将值设置为' PUT'在表格中。
来源:
答案 1 :(得分:1)
抱歉,我的评论不正确,因为我的结构看起来不够近。我很确定如果修改它会起作用。
我只是设置了以下路线:
Route::put('{cpe_mac}/device/{device_mac}/rate/update', [ 'as'=> 'device.rate.update', 'uses' => 'DeviceController@updateRate']);
我在视图中添加了javascript:
$.ajax({
url: '{{ route('device.rate.update', [$cpe_mac, $device_mac], true) }}',
type: 'PUT',
dataType: 'json',
contentType: 'application/json; charset=utf-8',
data: {
some: 'test'
},
success: function(data) {
console.log(data);
},
error: function(xhr) {
console.log(xhr);
}
});
我传递true
作为第三个参数,因此它构建了一个带有绝对路径的URL。我认为它比试图预先env("APP_URL")
更清洁。
页面上的结果是:
$.ajax({
url: 'http://myapp.local/000D6766F2F6/device/080027E2FC7D/rate/update',
type: 'PUT',
dataType: 'json',
contentType: 'application/json; charset=utf-8',
data: {
some: 'test'
},
success: function(data) {
console.log(data);
},
error: function(xhr) {
console.log(xhr);
}
});
答案 2 :(得分:1)
HTML表单仅支持GET和POST,但它确实理解真正的PUT / PATCH请求。
其他注释:
1.首先使用Postman检查您的API。
1.确保您的协议是http / https
1.您的Controller方法应返回JSON格式
1.确保收到您的输入。
有关更多信息,请参阅此答案:
http://laravel.io/forum/02-13-2014-i-can-not-get-inputs-from-a-putpatch-request-