1

我有一个负责将用户注册表单发送到我的服务器的 emberjs 控制器。这在大多数情况下都可以正常工作,但我正在尝试利用 Promise,以便我可以进行一些错误检查、重定向等。

sendRegistration: () ->
  $.post('/api/v1/users', 
    user:
      email: @email,
      password: @password,
      password_confirmation: @passwordConfirmation
    ).then (response) ->
      alert('Hi!')

这或多或少是正确的,因为帖子被发送到服务器,并且服务器以适当的状态代码响应,但是 then 永远不会执行,大概是因为返回了帖子的结果。我的咖啡脚本有什么遗漏吗?

4

2 回答 2

2

我想要使​​用 jQuery 的延迟对象,你应该像这样定义你的发布请求:

sendRegistration: () ->
  $.post('/api/v1/users', 
    user: '',
    email: @email,
    password: @password,
    password_confirmation: @passwordConfirmation
  )
  .done (response) ->
    alert('Hi!')
  .fail (jqHXR, textStatus) ->
    alert('error')

来自文档的注释:

从 jQuery 1.5 开始,fail 和 done 以及从 jQuery 1.6 开始,回调钩子总是先进先出的托管队列,允许每个钩子有多个回调。请参阅延迟对象方法

希望能帮助到你。

于 2013-07-09T18:14:36.837 回答
1

只需使用.post回调:

sendRegistration: () ->
  $.post('/api/v1/users', 
    user:
      email: @email,
      password: @password,
      password_confirmation: @passwordConfirmation
    , (response) ->
      alert('Hi!')
    );
于 2013-07-09T17:49:44.760 回答