Ger*_*tiz 35 php jquery laravel laravel-5
我试图用jQuery做一个POST请求,但我得到一个错误405(方法不允许),我正在使用Laravel 5
这是我的代码:
jQuery的
<script type="text/javascript">
$(document).ready(function () {
$('.delete').click(function (e){
e.preventDefault();
var row = $(this).parents('tr');
var id = row.data('id');
var form = $('#formDelete');
var url = form.attr('action').replace(':USER_ID', id);
var data = form.serialize();
$.post(url, data, function (result){
alert(result);
});
});
});
</script>
Run Code Online (Sandbox Code Playgroud)
HTML
{!! Form::open(['route' => ['companiesDelete', ':USER_ID'], 'method' =>'DELETE', 'id' => 'formDelete']) !!}
{!!Form::close() !!}
Run Code Online (Sandbox Code Playgroud)
调节器
public function delete($id, \Request $request){
return $id;
}
Run Code Online (Sandbox Code Playgroud)
Jquery错误是http://localhost/laravel5.1/public/empresas/eliminar/5 405(Method Not Allowed).
网址值是
http://localhost/laravel5.1/public/empresas/eliminar/5
Run Code Online (Sandbox Code Playgroud)
而数据值是
_method=DELETE&_token=pCETpf1jDT1rY615o62W0UK7hs3UnTNm1t0vmIRZ.
Run Code Online (Sandbox Code Playgroud)
如果我改为$.get请求它工作正常,但我想做一个帖子请求.
有人可以帮帮我吗?
谢谢.
编辑!!
路线
Route::post('empresas/eliminar/{id}', ['as' => 'companiesDelete', 'uses' => 'CompaniesController@delete']);
Run Code Online (Sandbox Code Playgroud)
Jee*_*usu 46
该methodNotAllowed异常表示您请求的HTTP方法不存在路由.
您的表单已设置为发出DELETE请求,因此您的路由需要Route::delete()用来接收此请求.
Route::delete('empresas/eliminar/{id}', [
'as' => 'companiesDelete',
'uses' => 'CompaniesController@delete'
]);
Run Code Online (Sandbox Code Playgroud)
就我而言,路由器中的路由是:
Route::post('/new-order', 'Api\OrderController@initiateOrder')->name('newOrder');
并从客户端应用程序我将请求发布到:
https://my-domain/api/new-order/
所以,由于尾随斜杠,我得到了 405。希望它对某人有帮助
您的routes.php文件需要正确设置.
我假设您当前的设置是这样的:
Route::post('/empresas/eliminar/{id}','CompanyController@companiesDelete');
Run Code Online (Sandbox Code Playgroud)
或者其他的东西.改为定义删除方法的路由.
Route::delete('/empresas/eliminar/{id}','CompanyController@companiesDelete');
Run Code Online (Sandbox Code Playgroud)
现在,如果您使用Route资源,则用于'DELETE'方法的默认路由名称是.destroy.改为在该函数中定义删除逻辑.
如果您在开发过程中没有出现此类错误,并且它仅在生产中出现,请尝试
php artisan route:list查看该路线是否存在。
如果不尝试
php artisan route:clear清除您的缓存。
这对我有用。
| 归档时间: |
|
| 查看次数: |
133387 次 |
| 最近记录: |