リクエストが完了した後に 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"
)