我使用 laravel 控制器创建了一个安静的API。我有一个PhotosController
,它有一个destroy($id)
资源删除方法。我还有一段 javascript 代码,可以向我的应用发送DELETE
个请求。结果应该是删除$id
id的照片。但是laravel没有将我的请求路由到destroy
方法。相反,它会发送 401 Unauthorized 错误。
问题是我想通过DELETE
向我的应用发送Ajax
请求,但 laravel 并不允许我的请求被路由!
routes.php文件:
Route::resource('photos', 'PhotosController');
销毁方法:
public function destroy($id)
{
try{
unlink($_SERVER["DOCUMENT_ROOT"].'/uploads/doctors/' . $id);
Session::forget('photo');
$msg = Notification::where('flag', 's')->where('code', 'user-update-delete-photo-gallery')->first()->msg;
return Response::json(array('success' => $msg));
}catch (Exception $e){
App::abort(500, $e->getMessage());
}
}
我的Ajax请求:
$.ajax(
{
url: "/photos/" + name,
method : "DELETE", // Or POST : result is the same
data :{
_token : $("input[name=_token]").val(),
_method : 'DELETE'
},
success: function(data, textStatus, jqXHR ){
parent.replaceWith("");
toastr.success(data['success']);
$("#overlay").hide();
},
beforeSend : function(jqXHR, settings ){
$("#overlay").show();
},
error : function(jqXHR, textStatus, errorThrown ){
toastr.error(jqXHR.responseText);
$("#overlay").hide();
}
}
);
感谢您的帮助。
答案 0 :(得分:0)
我认为您的系统需要对控制器操作进行身份验证“销毁”方法。所以你需要在调用该方法之前登录。
如果您正在使用中间件“auth”(app \ Http \ Middleware \ Authenticate.php),您可以轻松找到返回“未授权”错误的“句柄”功能。
希望这会有所帮助。