执行Ajax时不允许的方法

时间:2015-12-16 19:13:30

标签: jquery ajax

路线

Route::put('url/update',['as'=>'test.update', 'uses'=>'TestController@update']);

的Ajax

$.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)

3 个答案:

答案 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-