我是 Ember/Ember-Data 的新手,偶然发现了一个我无法弄清楚的问题。我能够使用 Ember-Data 的 RESTAdapter 成功调用 PUT 和 POST 请求,但由于某种原因它停止工作。
问题是调用被正确调用,但没有在请求正文中发送任何 json 数据。
我逐步浏览了 Ember/Ember-Data/JQuery 代码,直到找到数据被删除的位置。
为清楚起见,我使用以下版本的框架:
- 余烬:1.0.0
- 灰烬数据:1.0.0 beta 3
- jQuery:1.10.2
数据被删除的地方是 Ember-Data,在 RESTAdapter 的实现中。具体实现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
is undefined
。和仍然填充了它们的原始数据url
。type
我从未使用过 Promises,并且不确定如何/为什么会删除数据。
由于这是以前的工作,我本可以做一些破坏它的工作方式的事情。
如果有人知道为什么会发生这种情况以及我能做些什么来解决它,将不胜感激。