Ajax で http status が200の時(サーバ側で何も問題なかった場合)、その戻り値のJSONが必ず model の属性を上書きしてしまうようです。
JSON以外で返すと、backboneでレスポンスを受けたた時に、エラーになってしまうし、{"message" : "successfully updated"} の様にすると、model に message 属性が書き込まれてしまいます。
"successfully updated" の様なメッセージを返した場合、どうしたら良いでしょうか?
解決しました。
2012/09/08 11:18:55Issue は 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:20:38誤 : issue から渡された json の内容が書き込まれて・・・
正 : サーバから渡された json の内容が issue に書き込まれて・・・