何时出现错误:或成功:在 Ajax 请求中调用的处理程序
Posted
技术标签:
【中文标题】何时出现错误:或成功:在 Ajax 请求中调用的处理程序【英文标题】:When are the error: or success: handlers called in Ajax request 【发布时间】:2021-01-27 15:49:15 【问题描述】:我有一个代码,其中 if
条件失败。在这种情况下,我希望触发 Ajax 的 error:
部分。但是每次都调用 Ajax 的success:
。这是一个代码,可以帮助您理解我想问的问题。
Ajax 请求调用
success: function (response)
//some code
,
error: function (response)
//some code
,
在我的后端代码中
if(condition )
//some code
return response()->json([
'success'=>true,
'message'=>"Success: handler in Ajax should be triggered"
]);
else
//some code
return response()->json([
'success'=>false,
// OR 'error'=>true,
'message'=>"Error: handler in Ajax should be triggered"
]);
但是,即使condition
得到false
,Ajax 中的success:
仍然被触发。它没有进入error:
部分。我不明白。有人可以解释发生了什么吗?
【问题讨论】:
Ajax 对您的success
property 一无所知 - 这不是标准的 HTTP 响应代码。为了到达error:
,您需要在后端失败并返回非200 HTTP 响应代码,例如500 错误代码。否则,在您的 success:
回调中,检查 response.success
【参考方案1】:
您的成功回调正在被调用,因为响应成功,因为它返回了 200 的 HTTP status code。
只有当您的控制器操作返回 >= 400 的状态代码时,才会调用您的错误回调。
如果您将controller action 修改为:
return response()->json(
[
'success'=>false,
'message'=>"Error: handler in Ajax should be triggered"
],
400
);
然后你的错误回调将被调用。
【讨论】:
你能告诉我什么时候HTTP状态码可以返回>=400吗?我是编码新手。 我附上了一个包含每个状态代码描述的列表。但简单来说,你可以说所有以 4xx 开头的状态码都是客户端错误和 5xx 服务器错误。以上是关于何时出现错误:或成功:在 Ajax 请求中调用的处理程序的主要内容,如果未能解决你的问题,请参考以下文章
Django CSRF 令牌错误或缺少 Ajax POST 请求