在請求完成後,我試圖隱藏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