Javascript 余烬保存呼叫未进入成功阻止

Javascript 余烬保存呼叫未进入成功阻止,javascript,ember.js,Javascript,Ember.js,我正在使用模型上的余烬保存调用来持久化和调用我的REST调用 _model.save().then(() =>{ console.log("success"); }, (error) { console.log("error"); }); 我的RESTAPI返回202响应(如网络选项卡上所示),在控制台上,我总是看到“错误”被打印出来。余烬中是否有将202视为错误的内容?如果是,如何修复它?我更喜欢使用本机promise挂钩,例如: model.save() .th

我正在使用模型上的余烬保存调用来持久化和调用我的REST调用

_model.save().then(() =>{
   console.log("success");
 }, (error) {
    console.log("error");
 });

我的RESTAPI返回202响应(如网络选项卡上所示),在控制台上,我总是看到“错误”被打印出来。余烬中是否有将202视为错误的内容?如果是,如何修复它?

我更喜欢使用本机promise挂钩,例如:

model.save()
  .then((idk) => {
     console.log('idk', idk);
  })
  .catch(error => {
     console.error(error);
  });
或者,如果您能够使用异步/等待:

   try {
     await model.save();
   } catch (error) {
     console.error(error);
   }

如果有错误,这两个代码段都会告诉您为什么会有错误:)

我更喜欢使用本机promise钩子,比如:

model.save()
  .then((idk) => {
     console.log('idk', idk);
  })
  .catch(error => {
     console.error(error);
  });
或者,如果您能够使用异步/等待:

   try {
     await model.save();
   } catch (error) {
     console.error(error);
   }

这两个代码段都会告诉您出现错误的原因:)

问题似乎已经解决。我的回答是空白的,因此余烬把它扔进了错误的回答中。即使有202响应,也应该从后端返回一些内容,或者必须重写应用程序适配器中的HandlerResponse方法。

似乎问题已经解决。我的回答是空白的,因此余烬把它扔进了错误的回答中。即使使用202响应,也会从后端返回一些内容,或者必须重写应用程序适配器中的HandlerResponse方法。

这取决于您试图实现的目标。如果您的
template.hbs
有如下内容

  {{#each model as |myModel|}}
    <tr>
      <td {{action 'saveMe' myModel}}> {{myModel.someAttribute}} </td>
  </tr>
 {{/each}}
actions: {
  saveMe(myModel) {
    return myArgument.save().then(() => {
      console.log('foo success');
    }).catch(errors => {
      console.log('bar error');
    });
  }
}

该操作的作用是保存要更改的属性值的更改。

这取决于您试图实现的目标。如果您的
template.hbs
有如下内容

  {{#each model as |myModel|}}
    <tr>
      <td {{action 'saveMe' myModel}}> {{myModel.someAttribute}} </td>
  </tr>
 {{/each}}
actions: {
  saveMe(myModel) {
    return myArgument.save().then(() => {
      console.log('foo success');
    }).catch(errors => {
      console.log('bar error');
    });
  }
}

该操作的作用是保存要更改的属性值的更改。

Ember Data尝试将响应正文解析为JSON,用于某些状态代码,包括202。空字符串不是有效的JSON。因此,它会抛出一个错误,正如您在一些评论中提到的:

SyntaxError:“JSON.parse:第1行第1列的数据意外结束 “JSON数据”

由于抛出,由
save()
返回的承诺被拒绝

您有两个选择:

  • 从后端返回有效的JSON
  • 将Ember数据的默认行为更改为不将202响应解析为JSON
请注意,
{}
将是有效的JSON,但不符合JSON API规范:

JSON对象必须位于每个JSON API请求的根目录下,并且 包含数据的响应。此对象定义文档的“顶部” 级别”

文档必须至少包含以下一个顶级 成员:

  • 数据:文档的“主要数据”
  • 错误:错误对象的数组
  • meta:包含非标准元信息的元对象

Ember Data尝试将响应主体解析为特定状态代码(包括202)的JSON。空字符串不是有效的JSON。因此,它会抛出一个错误,正如您在一些评论中提到的:

SyntaxError:“JSON.parse:第1行第1列的数据意外结束 “JSON数据”

由于抛出,由
save()
返回的承诺被拒绝

您有两个选择:

  • 从后端返回有效的JSON
  • 将Ember数据的默认行为更改为不将202响应解析为JSON
请注意,
{}
将是有效的JSON,但不符合JSON API规范:

JSON对象必须位于每个JSON API请求的根目录下,并且 包含数据的响应。此对象定义文档的“顶部” 级别”

文档必须至少包含以下一个顶级 成员:

  • 数据:文档的“主要数据”
  • 错误:错误对象的数组
  • meta:包含非标准元信息的元对象

它不应该是
然后((错误)=>{…
从未使用过余烬顺便说一句:)不,它是正确的,但不知道它为什么会被错误阻止。这是什么版本的余烬?你能使用async/Wait吗?它不应该是
然后((错误)=>{…
从未使用过余烬顺便说一句:)不,这是正确的,但不知道为什么会出现错误。这是什么版本的ember?您可以使用async/await吗?您是否尝试过响应(202状态代码)?您的代码段中错误变量的内容是什么?因此,后端没有错误,因为我可以看到整个过程都已完成。不知何故,ember将202视为错误。(这是我所能理解的)。给我一些时间,我将重置并再次调用。打印的错误似乎是后端有一些问题:SyntaxError:“JSON.parse:JSON数据的第1行第1列出现意外的数据结尾”你有没有用响应(202状态码)尝试过?代码片段中错误变量的内容是什么?因此,后端没有错误,因为我可以看到整个过程都完成了。不知怎的,ember将202视为错误。(这是我能理解的)。请给我一些时间,我将重置并再次调用。打印错误,似乎后端有一些问题:SyntaxError:“JSON.parse:JSON数据的第1行第1列的数据意外结束”