3

リクエストが完了した後に ajax ローダーを非表示にしようとしていますが、イベントdone()の直後、リクエストが行われる前にコールバックが起動しています。blur()これが事実であることを確認するために、コントローラーアクションを5秒間スリープさせました。結果がサーバーから返された後、または5秒後にのみ起動する必要があると思います。どうしたの?

  $('#order_billing_post_code').on 'blur', ->
    field = $(this)
    post_code = field.val()
    type = field.data 'address-type'

    if post_code.length is 8
      xhr = $.ajax
        url: "/address_lookups/new"
        data:
          post_code: post_code
        beforeSend: ->
          field.siblings('i.address-ajax-loader').show()
        success: (data) ->
          parse data, type
        dataType: "json"

      xhr.done(
        alert "done"
      )
4

1 に答える 1