在使用AJAX时如何在POPSTATE之前和之后进行绑定?

时间:2011-11-07 10:19:36

标签: jquery ajax javascript-events history

使用缓慢的AJAX向用户显示“loading ...”是一件好事。 现在我有使用'history.pushState'和'hostory.popState'的历史记录 但是在按下后退按钮时执行实际的ajax时,它并没有显示我的加载图像!

$(window).bind("popstate", function() {
  $.get(location.href);
  //$.getScript(location.href);
});

如何执行$(window).bind("before_popstate", function() {});

之类的操作

BTW我在后台运行Rails ......

PSS

  $(document).ready(function(){
  $(window).bind("popstate", function() {
  $.get(location.href);
  });

$('.remote')
.bind("ajax:beforeSend", function(evt, xhr, settings){
      $('#mainframe').html("");
      $('#loading').toggle();
   })
.bind("ajax:success", function(evt, data, status, xhr){
  $('#loading').toggle();
})
.bind('ajax:complete', function(evt, xhr, status){
      history.pushState(null, document.title, path)
})
.bind("ajax:error", function(evt, xhr, status, error){
      $('#mainframe').html("error");
      $('#loading').toggle();

});

2 个答案:

答案 0 :(得分:0)

怎么样:

$(window).bind("popstate", function() {
    your-showAjaxLoader-function()
    $.get(location.href);
    //$.getScript(location.href);
    your-removeAjaxLoader-function()
});

或那种性质的东西。我,我自己,将ajaxLoader-GIF称为历史预处理器,并在通话后或通话中使用ajaxLoader-GIF去除器。

更新: 我看到你正在切换三个绑定上的“加载”,但不是完整的。我,我自己,如果我必须嵌套命令,请特别避免使用切换。在START,你可以使用.show()和其他所有人,.hide()。

现在,回到真正的问题:“装载没有显示”。看起来好像代码一切正常。你确定“< img src”在你的代码中是否正确“加载”?

答案 1 :(得分:0)

还有一件事:你确定加载的z-index及其位置是否正确?我假设您希望加载覆盖任何内容,并且希望是在不透明的背景上。