差异`ajax:send`事件和发送ajax请求的`click`事件

时间:2013-12-20 15:15:01

标签: javascript jquery ruby-on-rails ajax coffeescript

我在这样的rails中使用coffee的ajax请求。

  $('#reload').on(
    'click': -> $('#response').html "<div class='panel'><img src='assets/load.gif'/></div>"
    'ajax:success': (data, res, xhr) ->
      $('#response').html res
  )

此代码工作正常,但是当我将click事件更改为ajax:send事件时(我认为它更恰当地代表了我正在做的事情。),那么代码的工作方式就差不多了。

点击后出现panel,但加载图像仅在2或3秒后出现。 我将像以前一样在这次click事件中使用。但我想知道为什么它会避免我未来的错误。

2 个答案:

答案 0 :(得分:0)

由于我以错误的方式使用了turbolink,因此出现了图像的延迟。

我的整个代码都是这样的。

$ ->
  $('#reload').on(
    'ajax:send': -> $('#response').html "<div class='panel'><img src='assets/load.gif'/></div>"
    'ajax:success': (data, res, xhr) ->
      $('#response').html res
  )

我将$ ->重写为ready = ->并添加了此代码,然后延迟不再发生。

$(document).ready(ready)
$(document).on('page:load', ready)

答案 1 :(得分:0)

你也可以使用ajax:before

$('#reload').bind('ajax:before', function() {
   $('#response').html("<div class='panel'><img src='assets/load.gif'/></div>"); 
});