私は Ember/Ember-Data を初めて使用し、理解できない問題に出くわしました。Ember-Data の RESTAdapter を使用して PUT および POST リクエストを正常に呼び出すことができましたが、何らかの理由で機能しなくなりました。
問題は、呼び出しが正しく呼び出されることですが、リクエスト本文で json データが送信されないことです。
データが削除されている場所が見つかるまで、Ember/Ember-Data/JQuery コードを調べました。
わかりやすくするために、次のバージョンのフレームワークを使用しています。
- 残り火: 1.0.0
- Ember-Data: 1.0.0 ベータ 3
- jQuery: 1.10.2
データが削除される場所は、RESTAdapter の実装の Ember-Data にあります。具体的には、ajax
メソッドの実装。
メソッドは次のとおりです。
ajax: function (url, type, hash) {
var adapter = this;
return new Ember.RSVP.Promise(function (resolve, reject) {
var hash = adapter.ajaxOptions(url, type, hash);
hash.success = function (json) {
Ember.run(null, resolve, json);
};
hash.error = function (jqXHR, textStatus, errorThrown) {
Ember.run(null, reject, adapter.ajaxError(jqXHR));
};
Ember.$.ajax(hash);
});
},
値は、hash
POST/PUT の BODY データが格納されている場所であり、この行にヒットしたとき
var adapter = this;
hash
パラメータには JSON データが含まれます。
ただし、Ember.RSVP.Promise
の関数が起動されると、hash
はundefined
. url
とtype
にはまだ元のデータが取り込まれています。
私は Promises を使用したことがなく、これがデータを削除する方法/理由がわかりません。
これは以前は機能していたので、機能を壊すようなことをした可能性があります。
これがなぜ起こっているのか、そしてそれを修正するために私に何ができるのかを誰かが知っていれば、それは大歓迎です.