2011-05-31 46 views
2

我对编程并不陌生,但在Javascript/web开发中有点生疏。我正在用Rails构建一个应用程序,并且我们有几个耗时的操作,在此期间我们想要向用户提供反馈。基本上,我想这样做使用AJAX:提供“进行中”...“完成”通知的最简单方法?

  1. [用户点击“确定”或“继续”]
  2. [可选确认对话框]
  3. 显示状态消息,说“工作... “操作发生时
  4. 当操作完成并从服务器返回数据时,状态消息变为”完成!“并呈现结果或发生一些回调。

自从我进行网络开发已经有一段时间了,一个简单的例子就是如何实现这样的功能将会非常有帮助。谢谢。

回答

5
$(window).ajaxStart(function() { 
    $("#loader").show(); 
}).ajaxStop(function() { 
    $("#loader").hide(); 
}); 

只是全局绑定到启动和停止。这个例子显示并隐藏了一个加载器div。通常你有一个微调,让用户知道它正在加载。

微调器的消失应该是足够的,“完成”的信息是矫枉过正。

+0

唉唉,所以这是它是怎么做。我总是想知道...... – mhy 2011-05-31 23:06:53

+0

+1 - @Raynos - 你在哪里得到一个“微调”?它是一个GIF,jQuery插件...? – 2011-06-01 16:54:50

+1

@PBrianMackey http://www.ajaxload.info/ – Raynos 2011-06-01 17:03:12

0
$.ajax({ 
    type: "POST", 
    url: "some.php", 
    data: "name=John&location=Boston", 
    beforeSend(jqXHR, settings) { 
     $(body).append('<div id="overlayStatus">Working...</div>'); 
    }, 
    complete(jqXHR, textStatus) { 
     $('#overlayStatus').html("Ajax call completed: " + textStatus); 
     setTimeout(function(){ 
     $('#overlayStatus').hide(); 
     }, 1000); 
    } 
}); 
+0

为什么'setTimeout'而不是'.delay' – Raynos 2011-05-31 22:48:17

+0

谢谢!这很清楚。 – mhy 2011-05-31 23:02:56

+0

@Raynos我不太确定,但我认为'.delay()'仅用于动画:) – Teneff 2011-05-31 23:07:21

0

你是在烘烤你自己的AJAX框架,还是使用内建在rails中的?如果是后者,窥视 选项linkt_to(特别是:更新一个) http://edgeguides.rubyonrails.org/ajax_on_rails.html

+0

最有可能的内置。在什么情况下有充分的理由不使用内置?无论如何,这个链接有很大的帮助。谢谢! – mhy 2011-05-31 23:06:14

相关问题