dee*_*dee 3 ajax jquery coffeescript
我正在尝试在请求完成后隐藏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"
)
Run Code Online (Sandbox Code Playgroud)
我不熟悉这种语法(Coffeescript?),但看起来你正在将调用的结果alert "done"立即xhr.done()传递给,而不是传递对调用函数的引用alert.
尝试:
xhr.done ->
alert "done"
Run Code Online (Sandbox Code Playgroud)
在vanilla JS中,就像你写的一样:
xhr.done(alert("done"))
Run Code Online (Sandbox Code Playgroud)
代替:
xhr.done(function() {
alert("done");
});
Run Code Online (Sandbox Code Playgroud)
该alert呼叫立即发生,并将结果传递给xhr.done,然后没有任何用处的.
| 归档时间: |
|
| 查看次数: |
589 次 |
| 最近记录: |