Backbone model.save() не вызывает обратные вызовы с ошибкой или успешностью
Я пытаюсь обновить запись в БД, поэтому я определяю модель с данными и вызывая метод .save(). Запрос PUT запускается и обновляется запись базы данных. Проблема заключается не в вызове, а в вызове. Что может быть причиной?
sessionsModel.save({
error: function() {
alert('test');
},
success: function () {
alert('test');
}
});
Изменить: Запрос возвращает объект JSON
Ответы
Ответ 1
Просто найденная аналогичная проблема, в которой проблема была решена. Вы должны поместить что-то в качестве первого параметра (я ставлю null, так как моя модель уже была заполнена данными явно) и объект с обратными вызовами как второй. Так что-то вроде;
sessionsModel.save(null, {success:function() {} });
Ответ 2
При поиске по этому вопросу я впервые приземлился на этот SO-поток, который не работал у меня, но, похоже, работал для других, позже я столкнулся с эта ссылка, где кто-то пробовал null
вместо {}
в качестве первого параметра.
this.model.save(null, {
success: function (model, response) {
console.log("success");
},
error: function (model, response) {
console.log("error");
}
});
так, это сработало для меня. Надеюсь, это тоже поможет вам.
Ответ 3
Сервер должен вернуть объект JSON. Если ответ не является объектом JSON, обратные вызовы не будут срабатывать.
Проверьте это решение fooobar.com/questions/55484/...
Ответ 4
У меня была эта проблема, но я боролся, потому что мой сервер отвечал на действительный объект JSON (модель), и я уже использовал null
в моем вызове сохранения.
Как я обнаружил (в конечном итоге), до того, как был вызван обратный вызов успеха, возвращаемая модель передается методом проверки. В моем случае у меня было (очевидно, когда вы смотрите в нужном месте) проблему, которая привела к тому, что возвращенная модель считалась недействительной и впоследствии предотвращала обратный вызов успеха.
Хотя я понимаю, что это не помогает OP, я публикую это в надежде, что это поможет кому-то другому, имеющему ту же проблему.