过去几年我一直在使用Ruby on Rails,转而使用PHP编写的项目,我不能直截了当。
我有一个jQuery(CoffeeScript)AJAX调用,等待成功或错误。
问题是,即使请求失败,我的状态仍然正常,请参阅:
每次我得到它都不成功或错误,脚本就会挂起。
$.ajax
url: url
type: type
beforeSend: ->
// do something
error: ->
// I can never get here
success: (data) ->
// this works sometimes, but not when I get this weird stuff from screenshot
我想知道这是前端还是后端/服务器问题,我不应该在这里获得不同的状态代码吗?
答案 0 :(得分:1)
您只是调用一些返回JSON数据的服务,它会返回一条消息,说明
status:fail
但是您成功到达服务器,调用服务方法并获得响应,因此200 OK不是不合理的HTTP代码。这可能不是完全RESTful,但它并不罕见。
答案 1 :(得分:1)
正如您所发现的,ajax取消了HTTP状态代码。您的回复带有200
,因此请求成功。身体说“失败”这一事实无关紧要。 jquery不聪明,无法“读取”体内的内容。
在现实世界中,你的ajax请求驱车前往商店,试图买一块巧克力棒,商店缺货。往返商店的旅行是完全成功的(汽车没有发生故障,你没有迷路等等)。你没有得到巧克力棒的事实与旅行的成功/失败无关。