Laravel AJAX 放置和删除

Laravel AJAX PUT & DELETE

在我的开发机器上,关于 POST、PUT、DELETE、GET 的一切工作正常。

例如:

POST https://example.com/laravel/project (will create a new project - with data coming in from ajax)
PUT https://example.com/laravel/project/1 (will update the content of project with ID 1)
DELETE https://example.com/laravel/project/1 (will delete the project with ID 1)

但是,我将我的项目移到了生产环境(另一台服务器),现在

POST https://example.com/laravel/project (will create a new project as expected)
PUT https://example.com/laravel/project/1 (will not **update** project 1)
DELETE https://example.com/laravel/project/1 (will **not** delete project 1)

我检查了 chrome 的网络选项卡,我可以看到存在的 cookie 和来自 ajax 调用的数据(例如,updated/modified).

此外,我的状态为 200,因此据我所知,网络服务器上也没有任何问题。

下面是我的 ajax 调用示例 - 它们在 $.ajax 中并且具有成功和失败函数。只显示重要的部分:)

type: 'POST',
url: '/laravel/project',
data: {
    '_token': $('input[name=_token]').val(),
    'project_name': $('#project_name_add').val(),
    'category': $('#category_add').val()
}

type: 'PUT',
url: '/laravel/project/' + id,
data: {
    '_token': $('input[name=_token]').val(),
    'project_name': $('#project_name_edit').val(),
    'category': $('#category_edit').val()
},

但是,它实际上并没有更新或删除任何内容。

感谢您的帮助。

尝试向名为 _method 的表单添加一个隐藏字段。该功能称为 method spoofinghttps://laravel.com/docs/5.5/routing#form-method-spoofing

<form action="/foo/bar" method="POST">
    <input type="hidden" name="_method" value="PUT">
    <input type="hidden" name="_token" value="{{ csrf_token() }}">
</form>

在javascript中,使用jquery:

const data = {
  _method: 'PUT',
  _token: '{{ csrf_token() }}',
  ...others data here.
}
$.post(`/foo/bar`, data, function(res) {
  console.log(res);
})