backbone.jsのAjaxについての質問です。

Ajax で http status が200の時(サーバ側で何も問題なかった場合)、その戻り値のJSONが必ず model の属性を上書きしてしまうようです。

JSON以外で返すと、backboneでレスポンスを受けたた時に、エラーになってしまうし、{"message" : "successfully updated"} の様にすると、model に message 属性が書き込まれてしまいます。

"successfully updated" の様なメッセージを返した場合、どうしたら良いでしょうか?

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2012/09/08 11:19:11
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:oil999 No.1

回答回数1728ベストアンサー獲得回数320

ポイント100pt

ソースがないので分かりませんが、ViewとModelが混在してしまっているのではありませんか?

id:norisuke3

解決しました。
Issue は Model を継承したクラスです。
以下のように書いていて、success に処理が移るときには既に、issue から渡された json の内容が書き込まれてしまっていたのですが、model#parse() をオーバーライドすることで、この書き込まれる内容をコントロールすることができるようです。

var issue = new Issue();
issue.save({
magazine: magazine.id
}, {
success: function(model, response){
self.collection.add(issue);
},
error: function(model, response){
var message = $.parseJSON(response.responseText).message;
alert(message);
}

ありがとうございました。

2012/09/08 11:18:55
id:norisuke3

訂正
誤 : issue から渡された json の内容が書き込まれて・・・
正 : サーバから渡された json の内容が issue に書き込まれて・・・

2012/09/08 11:20:38
  • id:a-kuma3
    その、更新用のリクエストは、どうやって出しているのですか?
    差支えない範囲で、ソースコードを見てみたいんですが。
  • id:norisuke3
    ありがとうございます。解決しました。コードも含め、上に解決策を記述しました。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません