小编Mic*_*l O的帖子

从未使用Ember-Data save()触发成功回调

我正在尝试使用ember-data来获取一个简单的注册表单以保存在我的服务器上.这个电话在技术上有效,但成功回调永远不会触发承诺,我不知道为什么.

服务器从前端接收数据并成功将其保存到数据库.然后它返回CREATED的状态代码201.我可以看到Chrome调试器中发生的成功响应.但即使服务器响应成功状态,也会在save的承诺上触发错误回调.我已经通过调试器确认每次都会发生这种情况; 错误回调中的语句.

我的路由器的模型连接起来像这样:

model: function() {
  return this.store.createRecord('registerUser');
}
Run Code Online (Sandbox Code Playgroud)

我的控制器中有一个简单的寄存器功能:

register: function() {
  var self = this;
  this.get('model').save().then(function() {
     self.transitionToRoute('index');
  }, function(resp) {
     if (resp.responseJSON) {
       self.get('model').set('errors', resp.responseJSON.errors);
     } 
  });
}
Run Code Online (Sandbox Code Playgroud)

每次我的服务器返回响应,成功或失败时,都会遇到故障回调.如果我在响应中有错误(对于无效数据或其他内容),则错误会在表单中成功显示.我可以看到请求正确进入,数据存储在数据库中.因此,保存在技术上是成功的,但是即使从服务器返回成功的201状态(可以在Chrome调试器中验证),ember似乎也不知道它.

我唯一能想到的是ember-data的适配器正在做一些我不知道的事情,但我只是使用默认的RESTAdapter而没有触及它.还有别的事吗

如果它有所不同,服务器正在运行Play 1.2.5.我不知道这是否会对响应的标题或类似内容产生影响.

任何帮助将不胜感激.感谢您的时间!

麦克风

因此,问题与JSON响应有关.这两个问题:

  • 我没有在回复中包含ID
  • 我没有在"registerUser"中"包装"响应.这是匹配模型名称所必需的.

以下是有效回复:

{
  "registerUser": {
    "id": 11,
    "email": "mike999@test.com",
    "password": "12345",
    "password2": "12345",
    "name": "Mike"
  }
}
Run Code Online (Sandbox Code Playgroud)

ember.js ember-data

9
推荐指数
1
解决办法
3584
查看次数

标签 统计

ember-data ×1

ember.js ×1