ajax – Laravel:无法创建正确的DELETE操作请求
无法在Laravel中创建删除操作.
我一直在收到Not Found或Token mismatch错误. 我的控制器: class TranslationController extends Controller { public function destroy($id) { //$id = 1; /*$translation = Translation::find($id); $translation->delete();*/ } .... } Ajax调用: /* Delete given translation */ var url = "translation"; var id = 1; $.ajax({ method: 'DELETE',url: url + '/' + id,// data: {'id': id,'_token': token},success: function() { } }); 这将给出VerifyCsrfToken.php第53行中的TokenMismatchException: 如果我尝试: url: url + '/' + id,data: {'_token': token},// token is equal to csrf_token 我有:Controller.php第269行中的NotFoundHttpException: 路线: Route::controller('translation','TranslationController'); 否则我使用的是Laravel 5默认中间件,我没有改变任何与csrf相关的内容. 解决方法
NotFoundHttpException意味着没有指定具有特定HTTP谓词的特定请求的路由,或者错误地实现了映射到路由的动词的动作(即控制器方法).
既然你在帖子中提到过TranslationController定义为implicit controller, Route::controller('translation','TranslationController'); 从您发布的控制器代码中,很明显您没有在控制器TranslationController中为destroy方法定义动词. 如果您使用终端/命令行界面在项目根目录中执行php artisan route:list,您将看到已注册HTTP谓词的列表,映射到相应的URI以及操作. 要在隐式控制器中定义特定方法,动词(GET,PUT,POST,DELETE)应位于实际函数名称之前. public function deleteDestroy($id){ //delete logic for the resource } 注意: 更新 忘了提到你的AJAX调用中的url也应该更改为以下代码才能工作,因为这是Laravel的隐式控制器为DELETE请求定义路由的方式: var url = "translation/destroy"; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |