jquery.$ajax发送请求返回值

jquery.$ajax 后台将失败原因放到response并返回http-code 500,前端有办法从error回调函数里面拿到json数据吗?之前像这种情况都是在成功回调里面处理的

阅读 5.8k
6 个回答

可以,前提是后台在返回500的时候依然把数据返回了。可以$ajax的 error 回调中获取到数据。
但是:
按照约定,500不应该返回数据。
请参考http状态码

补充:
响应的状态码和数据后端都是可以违背约定自己写的
如图:

即便是500,在我的response中依然有数据
clipboard.png

clipboard.png

再更新

clipboard.png

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

不能。三个参数XMLHttpRequest 对象、错误信息、捕获的异常对象

erro的话我记得只有三个参数,XMLHttpRequest 对象、错误信息、(可选)捕获的异常对象

首先你要理解,他为什么会走到error区间
走到error区间只有一个原因:恭喜你,你的服务器挂了。
得不到相应,所以进入了error区间。
只要得到了回应,都会进入success区间,success的意思是得到了服务器的响应
而不是得到了正确的http-code,那些都是后端去设置的而已。

==========================================
我被jQuery蒙蔽了双眼...跳过我的答案吧

不能,如果error都能取到数据,那还要请求成功干甚?你说呢?

你可以用ajaxsetup设置一下error的提示信息,如果ajax走error了那就是接口有问题,和success时根据状态码判断成功与否是两个概念。
比如接口返回数据里status == 200时成功取得数据,其他状态码会对应不同的原因,这是后台与前端的约定,说明接口是没问题的,可能是用户填写数据错误,可能是后台的逻辑有问题等等,但接口都是success的。
如果走了error,不管报500啊404啊还是什么的,都是接口问题。所以不要说实现不了了,单凭理论上也是不可能让你的需求实现的。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进