RESTfulでないサーバーを使用してバックボーンコレクションを保存する方法について複数の記事を探していますが、まだ少し混乱しています。私はtoJSON
メソッドをオーバーライドして、自分のAPIに投稿するためにデータをカスタマイズする方法を作成しました("/api/entity/735/request/personDelete"
は現在jsfiddles/echo/jsonのためにスワップアウトされています)。だからsave
メソッドを作成しましたBackbone.sync
、success
私はあらゆる種類のレスポンスをログアウトしています。オブジェクトは空であり、どこが紛失しているのか、間違っているのか分かりません。誰か私にいくつかの指導を与えることができる?私はこのようなものを今後も使用できるように、このサンプルを動作させたいと思うでしょう。バックボーン:コレクション全体を非RESTfulサーバーに保存する
JS
var PersonCollection = Backbone.Collection.extend({
model: PersonModel,
url: function() {
// Dummy JSFiddle endpoint
// Example non-RESTful url "/api/entity/735/request/personDelete"
return '/echo/json/';
},
/**
* Override toJSON to loop through collection models making
* custom objects containing specific attributes to be posted.
*/
toJSON: function() {
console.log(this.models);
var plucked = this.models.map(function(model) {
return _.pick(model.toJSON(), ["id","name", "teams"])
});
console.log(plucked);
return plucked;
},
save: function(options) {
Backbone.sync('create', this, {
success: function(data, textStatus, jqXHR) {
console.log('Saved!', data);
}
});
}
});
JSFiddle:http://jsfiddle.net/kyllle/f1h4cz7f/3/
Plaseチェックを、期待通りのパラメータが渡されます(私は疑っている)、あなたは2xx応答を取得します。リクエストをどのように表示するかを指定して投稿を編集してください(フォームエンコードやアプリケーション/ jsonなど)。私はイベント 'Backbone.sync()'があなたのニーズに合わないかもしれないと言っています。あなたは 'save()'で '$ .ajax()'を直接使うこともできますし、その "非標準"のREST APIと通信するモデルやコレクションがある場合は、 'Backbone.sync () '代わりに。 –
これは私の問題のちょっとした部分ですが、どこでどのようにパラメータを渡す必要があるのかわからないので、保存を効果的に実行できますか? – styler
あなたは本当にコレクション内のすべてを保存するつもりですか?私はあなたのバックエンドがRESTfulではないと言ったのを知っていますが、あなたのバックエンドが期待していることは何ですか?そして、それはどのようにjsonを期待していますか? –