在请求完成后,我试图隐藏ajax加载器,但done()
回调在blur()
事件之后立即触发,然后发出请求。我让我的控制器动作睡了5秒,以确定是这种情况,而且是这样。我认为它应该只在结果从服务器返回后或5秒钟后触发。这是怎么回事?jQuery done()似乎在发送请求之前触发
$('#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"
)
为什么没有'alert'完成''在ajax调用的'complete'上触发?看看文档http://api.jquery.com/jQuery.ajax/ – Nomad101 2013-05-11 22:32:57
@ Nomad101,因为'complete','success'等是“老派”的jQuery。 – Alnitak 2013-05-11 22:33:44
@Alnitak和问题是?我的意思是他们仍然按照他们应该的方式工作只是说可能是一个简单而有效的解决方案。 – Nomad101 2013-05-11 22:34:26