Ajax 在 Laravel 中只获得成功响应
Posted
技术标签:
【中文标题】Ajax 在 Laravel 中只获得成功响应【英文标题】:Ajax gets only success response in Laravel 【发布时间】:2021-12-20 00:08:14 【问题描述】:即使出现错误,我的 ajax 代码也总是会收到成功响应。 我正在使用 Laravel 8.2。
这里是 javascript
$(".deleteRecord").click(function()
var id = $(this).data("id");
var token = $("meta[name='csrf-token']").attr("content");
if(confirm('Do you want to delete?'))
$.ajax(
url: "operDel/"+id,
type: 'post',
cache: false,
data:
"id": id,
"method": 'post',
"_token": token,
,
dataType: "json",
success: function()
alert('Record is deleted'); // I getting only this alert
,
error: function()
alert('You can not delete this record');
);
);
这是路线
Route::post('operDel/id', '\App\Http\Controllers\OperationController@destroy')->name('operDel')->middleware('auth');
这是控制器
public function destroy($id)
$user = User::find($id);
if($user->type !== 0)
$user->delete();
return response()->json([
'success'=>"Record deleted."
]);
else
return response()->json([
'error' => "You can not delete this"
]);
控制器运行正常,$user-> 类型时它从数据库中删除了记录! == 0。 但我只在成功功能中收到警报。 如何显示警报响应消息?
【问题讨论】:
您的问题是您没有按照应有的方式使用框架,您应该使用Gates 来授权请求并使用Form Requests 来执行此操作......最重要的是您阅读了整个文档,因此您可以知道该框架提供了什么... 【参考方案1】:您需要发送错误响应代码,以便 AJAX 将响应视为失败,例如:
public function destroy($id)
$user = User::find($id);
if($user->type !== 0)
$user->delete();
return response()->json([
'success'=>"Record deleted."
]);
else
return response()->json([
'error' => "You can not delete this"
], 400); // 400 means bad request
发送一个超过 400 的响应代码将使 AJAX 明白存在错误。
【讨论】:
400
或 401
(未授权)或 403
(禁止)以上是关于Ajax 在 Laravel 中只获得成功响应的主要内容,如果未能解决你的问题,请参考以下文章