从我的控制器返回一个不同于200的代码以触发ajax错误,这被认为是一种好的做法吗

Is it considered good practice to return a code different than 200 from my controllers, in order to trigger an ajax error?

本文关键字:错误 认为是 ajax 一种 返回 控制器 我的 一个 不同于 代码      更新时间:2023-09-26

我有如下代码(这是一个远程表单)

def something
  @user = User.find_by_email(params[:email])
  @success = true
  @error = nil
  if !@user
    @success = false
    @error = "No such user"
  elsif !@user.some_condition
    @success = false
    @error = "User did not pass condition"
  end
  respond_to do |format|
    format.json { render "my_json_view",:status => @success ? 200 : 403 }
  end
end

my_json_view中,我做了一些类似的事情:

json.response do |json|
  if @success
    json.success true
    # data I need here
  else
    json.success false
    json.error @error
  end
end

通过这种方式,我可以轻松地挂接到ajax:error事件,并轻松地处理错误情况。我只是想知道这种做法有多好。可以返回不同的http代码,这样jQuery就会知道失败了吗?

当然。这就是错误代码的作用。但请确保您选择了正确的HTTP状态代码。

确实如此。您应该始终返回与您的操作中发生的事情相对应的状态代码,并且状态代码涵盖了许多情况。