如何使用Express返回格式良好的201?

时间:2015-04-28 22:43:34

标签: jquery ember.js express ember-cli

我正在尝试使用DS.RESTAdapter使用ember-cli构建todoMVC并表达模拟调用。我得到的问题是,当我尝试保存新的待办事项时,我在控制台中看到了这个错误:

SyntaxError: Unexpected end of input
    at Object.parse (native)
    at jQuery.parseJSON (http://localhost:4200/assets/vendor.js:8717:22)
    at ajaxConvert (http://localhost:4200/assets/vendor.js:9043:19)
    at done (http://localhost:4200/assets/vendor.js:9461:15)
    at XMLHttpRequest.jQuery.ajaxTransport.send.callback (http://localhost:4200/assets/vendor.js:9915:8)

我很确定问题是,当我在新创建的模型上调用save()时,它正在发送一个帖子请求给/快递正在回复:

 todosRouter.post('/', function(req, res) {
    res.status(201).end();
  });

这是Ember创建todo的创建动作:

actions:
    createTodo: ->
      return unless title = @get('newTitle')?.trim()

      @set('newTitle', '')
      @store.createRecord('todo',
        title: title
        isCompleted: false
      ).save()

非常感谢任何帮助。我是新来表达并且不确定为什么jquery不喜欢它返回的201.

1 个答案:

答案 0 :(得分:6)

问题是它正在尝试parseJSON空白回复。它正在有效地执行jQuery.parseJSON('') - 如果您尝试运行它会产生错误。

要解决它,您可以返回任何可以解析为JSON的字符串 - 例如字符串null或空引号""

todosRouter.post('/', function(req, res) {
  res.send('null');
  res.status(201).end();
});

todosRouter.post('/', function(req, res) {
  res.send('""');
  res.status(201).end();
});
相关问题