Jquery ajax выполнил обратный вызов, не отвечающий на 201

У меня есть пост ajax как таковой:

$.post("/api/v1/payment_methods/create_credit_card", values)
.done (response) ->
  console.log("GOOD JOB")
.fail (response) ->
  console.log("Adas")

Ответ - 201, однако сделано, похоже, не захватывает его, и вместо этого он будет терпеть неудачу. Я думал, что 201 будет считаться успешным и будет захвачен совершенным. Любые идеи, почему он не будет работать?

Примечание. Вышеприведенный код находится в файле coffeescript, который не влияет на вопрос, но объясняет мой синтаксис

Ответ 1

Итак, мы выяснили, что было не так, JSON.parse выбрасывал ошибку синтаксиса - поэтому значения, отправленные в isnt, не действительны в формате JSON. Плакат не смог увидеть ошибку синтаксиса в хроме, но firebug показал ошибку.

Это означает, что всякий раз, когда Javascript генерирует исключение, ответ может быть равен 200, 201, 202 и т.д., но из-за синтаксической ошибки будет вызвана функция fail().

РЕДАКТИРОВАТЬ. Также вы должны использовать другой ответ, многие используют 200 - OK, но Id рекомендует использовать 202 - ACCEPTED в этом случае.

Ответ 2

Взглянув на источник, успех должен срабатывать для чего-то между 200-300 и 304. Альтернативой является явный вызов statusCode:

$.ajax({
  statusCode: {
    201: function() {
      console.log("HERE");
    }
  }
});