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");
}
}
});