Итак, моя проблема в следующем.
Использование магистрали для сохранения чего-либо в базе данных MYSQL.
Когда я вызываю this.model.save (), у меня возникает очень странная проблема.
Модель сохранит ответ JSON как объект и не будет вместо этого обновлять новые значения.
Мои атрибуты в инструментах разработки будут выглядеть примерно так.
Атрибуты: Объект
0: Object
ID: "4"
Name: "TEST"
Title: "MEOW"
Stuff: "1"
When: "2013-02-14 22:17:14"
0 не должно быть. Я подтвердил, что объект json действителен, поэтому знаю, что проблема не в этом.
1 ответ
Похоже, ваш ответ JSON на самом деле является массивом с одним элементом, а не объектом.
Свойство 0
создается, когда Backbone вызывает model.set(response)
, который, в свою очередь, копирует все ключи объекта ответа в хэш атрибутов. Если массив передается в set
, вот что происходит.
Вы должны исправить свой сервер, чтобы он отвечал необработанным объектом ({...}
) вместо массива ([{...}]
). Если вы не можете изменить поведение сервера, вы можете переопределить Model.parse
, чтобы развернуть ответ на клиенте:
var Model = Backbone.Model.extend({
parse: function(response) {
return _.isArray(response) ? response[0] : response;
}
});
Похожие вопросы
Новые вопросы
json
JSON (нотация объектов JavaScript) — это сериализуемый формат обмена данными, который может быть прочитан машиной и человеком. Не используйте этот тег для собственных объектов JavaScript или литералов объектов JavaScript. Прежде чем задать вопрос, подтвердите свой JSON с помощью валидатора JSON, такого как JSONLint (https://jsonlint.com).