Coffeescript Promise with Jquery Post

Coffeescript Promise with Jquery Post

本文关键字:Post Jquery with Promise Coffeescript      更新时间:2023-09-26

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

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

这或多或少是正确的,因为post被发送到服务器,服务器会用适当的状态代码进行响应,但随后永远不会执行,可能是因为post的结果被返回了。我的咖啡脚本有什么遗漏吗?

我想,为了利用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开始,回调挂钩始终是先进先出的托管队列,允许每个挂钩有多个回调。请参阅递延对象方法。

希望能有所帮助。

只需使用.post回调:

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