1

ユーザー登録フォームをサーバーに送信する責任がある emberjs コントローラーがあります。これはほとんどの場合うまくいきますが、エラーチェックやリダイレクトなどを行うことができるように、promise を利用しようとしています。

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

投稿がサーバーに送信され、サーバーが適切なステータス コードで応答するため、これは多かれ少なかれ正しく機能しますが、おそらく投稿の結果が返されるため、その後は実行されません。私のcoffeescriptに欠けているものはありますか?

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 以降では、always コールバック フックは先入れ先出し管理キューであり、フックごとに複数のコールバックが可能です。遅延オブジェクト メソッドを参照してください。

それが役に立てば幸い。

于 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 に答える