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 spoofing
。
https://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);
})
在我的开发机器上,关于 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 spoofing
。
https://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);
})