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"; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
