我是新手,这可能是我很遗憾的事情。 “422(不可处理的实体)”是我在服务器端设置的,而不是库的一部分,所以如果它需要与422不同,我找不到文档。
浏览器是chrome。服务器端是Hunchentoot。
这是Chrome控制台上显示的错误:
POST http://localhost:8080/users 422 (Unprocessable Entity) jquery.js:8706
send jquery.js:8706
x.extend.ajax jquery.js:8136
(anonymous function) ember-data-1.0.0-beta.8.js:2016
invokeResolver ember-1.5.1.js:9646
Promise ember-1.5.1.js:9632
Adapter.extend.ajax ember-data-1.0.0-beta.8.js:2005
Adapter.extend.createRecord ember-data-1.0.0-beta.8.js:1794
_commit ember-data-1.0.0-beta.8.js:11343
(anonymous function) ember-data-1.0.0-beta.8.js:10516
Ember.EnumerableUtils.forEach ember-1.5.1.js:1932
Ember.Object.extend.flushPendingSave ember-data-1.0.0-beta.8.js:10501
DeferredActionQueues.flush ember-1.5.1.js:6127
Backburner.end ember-1.5.1.js:6215
Backburner.run ember-1.5.1.js:6254
Ember.run ember-1.5.1.js:6664
handleRegisteredAction ember-1.5.1.js:38510
(anonymous function) ember-1.5.1.js:22259
x.event.dispatch jquery.js:5095
v.handle jquery.js:4766
这是返回的json:
{"errors" : { "username" : ["Username exists"]}}
适配器:
App.ApplicationAdapter = DS.RESTAdapter
这是模型,永远不会调用警报:
App.User = DS.Model.extend({
username: DS.attr('string'),
password: DS.attr('string'),
becameInvalid: function( model) {
alert('Whoops')
}
})
注册控制器:
App.SignupController = Ember.ObjectController.extend({
confirm_password: "",
actions: {
signup: function() {
var user = this.get('model')
var self = this
user.save().then( function( post) {
self.transitionToRoute('/tasks', post)
})
}
}
})
路由器:
App.SignupRoute = Ember.Route.extend({
model: function() {
return this.store.createRecord('user')
}
})
答案 0 :(得分:0)
我必须在我的代码中将它添加到适配器:
App.ApplicationAdapter = DS.RESTAdapter.extend({
ajaxError: function(jqXHR) {
var error = this._super(jqXHR);
if (jqXHR && jqXHR.status === 422) {
var jsonErrors = Ember.$.parseJSON(jqXHR.responseText)["errors"];
return new DS.InvalidError(jsonErrors);
} else {
return error;
}
}
});
非常令人沮丧