jquery.$ajax 后台将失败原因放到response并返回http-code 500,前端有办法从error回调函数里面拿到json数据吗?之前像这种情况都是在成功回调里面处理的
jquery.$ajax 后台将失败原因放到response并返回http-code 500,前端有办法从error回调函数里面拿到json数据吗?之前像这种情况都是在成功回调里面处理的
首先你要理解,他为什么会走到error区间
走到error区间只有一个原因:恭喜你,你的服务器挂了。
得不到相应,所以进入了error区间。
只要得到了回应,都会进入success区间,success的意思是得到了服务器的响应
而不是得到了正确的http-code,那些都是后端去设置的而已。
==========================================
我被jQuery蒙蔽了双眼...跳过我的答案吧
你可以用ajaxsetup设置一下error的提示信息,如果ajax走error了那就是接口有问题,和success时根据状态码判断成功与否是两个概念。
比如接口返回数据里status == 200时成功取得数据,其他状态码会对应不同的原因,这是后台与前端的约定,说明接口是没问题的,可能是用户填写数据错误,可能是后台的逻辑有问题等等,但接口都是success的。
如果走了error,不管报500啊404啊还是什么的,都是接口问题。所以不要说实现不了了,单凭理论上也是不可能让你的需求实现的。
可以,前提是后台在返回500的时候依然把数据返回了。可以$ajax的 error 回调中获取到数据。
但是:
按照约定,500不应该返回数据。
请参考http状态码
补充:
响应的状态码和数据后端都是可以违背约定自己写的
如图:
即便是500,在我的response中依然有数据

再更新
也可以获取到数据,但是不要这么写 X3!!!违背约定,这种代码都是垃圾代码。