AJAX状态200,但响应状态是“失败”?

时间:2015-07-02 14:29:41

标签: php jquery ajax http-status-codes

过去几年我一直在使用Ruby on Rails,转而使用PHP编写的项目,我不能直截了当。

我有一个jQuery(CoffeeScript)AJAX调用,等待成功或错误。

问题是,即使请求失败,我的状态仍然正常,请参阅:

enter image description here

每次我得到它都不成功或错误,脚本就会挂起。

$.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

我想知道这是前端还是后端/服务器问题,我不应该在这里获得不同的状态代码吗?

2 个答案:

答案 0 :(得分:1)

您只是调用一些返回JSON数据的服务,它会返回一条消息,说明

status:fail

但是您成功到达服务器,调用服务方法并获得响应,因此200 OK不是不合理的HTTP代码。这可能不是完全RESTful,但它并不罕见。

答案 1 :(得分:1)

正如您所发现的,ajax取消了HTTP状态代码。您的回复带有200,因此请求成功。身体说“失败”这一事实无关紧要。 jquery不聪明,无法“读取”体内的内容。

在现实世界中,你的ajax请求驱车前往商店,试图买一块巧克力棒,商店缺货。往返商店的旅行是完全成功的(汽车没有发生故障,你没有迷路等等)。你没有得到巧克力棒的事实与旅行的成功/失败无关。