Jquery 如何在使用ajax的嵌套rails模型中处理后台任务时显示动画微调器
我的具体示例非常复杂,因此我将使用Railscasts的Ryan所展示的示例来讨论这一点: 背景 我有一个表格,比如“调查”,其中包含任意数量的“问题” 塞纳里奥 给我在“编辑调查”页面 我想在每个“问题”字段中添加一个按钮,该按钮调用一个远程函数,该函数反过来排队等待一个延迟的任务,以对“问题”执行一些处理 为了向用户提供反馈,我想禁用该按钮,并显示一个动画微调器,该微调器将一直保留,直到延迟的_作业处理完“问题” 提示-我可以向“问题”模型添加方法,以指示延迟的作业的状态Jquery 如何在使用ajax的嵌套rails模型中处理后台任务时显示动画微调器,jquery,ruby-on-rails,ajax,delayed-job,Jquery,Ruby On Rails,Ajax,Delayed Job,我的具体示例非常复杂,因此我将使用Railscasts的Ryan所展示的示例来讨论这一点: 背景 我有一个表格,比如“调查”,其中包含任意数量的“问题” 塞纳里奥 给我在“编辑调查”页面 我想在每个“问题”字段中添加一个按钮,该按钮调用一个远程函数,该函数反过来排队等待一个延迟的任务,以对“问题”执行一些处理 为了向用户提供反馈,我想禁用该按钮,并显示一个动画微调器,该微调器将一直保留,直到延迟的_作业处理完“问题” 提示-我可以向“问题”模型添加方法,以指示延迟的作业的状态 因此,考虑到最佳
因此,考虑到最佳实践,实现这一点的最佳方法是什么?使用jQuery,您应该能够使用回调打开和关闭throbber(是的……这是“官方”名称) 或者,如果它更复杂,我以前用过:
使用jQuery,您应该能够使用回调打开和关闭throbber(是的……这是“官方”名称) 或者,如果它更复杂,我以前用过:
首先,您需要一个动画微调器图形。谷歌,有很多网站会为你生成它们 在布局(或视图)中使用以下内容引用gif:
首先,您需要一个动画微调器图形。谷歌,有很多网站会为你生成它们 在布局(或视图)中使用以下内容引用gif:
简单。
//hidden div that has spinner image
<div id="LoadingDiv" style="display:none;">
<img src="ajax-loader.gif" alt="" /></div>
然后根据需要打开和关闭它
var ldiv = document.getElementById('LoadingDiv');
ldiv.style.display='block';
/*Do your ajax calls, sorting or laoding, etc.*/
ldiv.style.display = 'none';
如果您想了解更多细节,或者需要使用半透明像素,请参阅我的全文
简单。
//hidden div that has spinner image
<div id="LoadingDiv" style="display:none;">
<img src="ajax-loader.gif" alt="" /></div>
然后根据需要打开和关闭它
var ldiv = document.getElementById('LoadingDiv');
ldiv.style.display='block';
/*Do your ajax calls, sorting or laoding, etc.*/
ldiv.style.display = 'none';
如果您想了解更多细节,或者需要使用半透明像素,请参阅我的全文
执行轮询并使用类似于以下内容的json进行响应:
{"finished": [1,3,3]}
然后添加轮询JavaScript
var interval = setInterval(function() {
$.get("test.json", function(data) {
for(i in data.finished) {
//Hide spinner with id = data.finished[i]
}
})
}, 5000) //Time in milliseconds
执行轮询并使用类似于以下内容的json进行响应:
{"finished": [1,3,3]}
然后添加轮询JavaScript
var interval = setInterval(function() {
$.get("test.json", function(data) {
for(i in data.finished) {
//Hide spinner with id = data.finished[i]
}
})
}, 5000) //Time in milliseconds
不过,显示微调器并不是真正的挑战,问题在于远程函数调用只是设置延迟的_作业,它将由延迟的_作业进程执行。我需要的是某种观察器函数,它反复轮询服务器以确定作业是否已完成,如果已完成,我需要隐藏与该作业关联的特定微调器。显示微调器并不是真正的挑战,但问题是远程函数调用只是设置延迟的\u作业,将由延迟的作业流程执行。我需要的是某种观察器函数,它反复轮询服务器,以确定作业是否已完成,如果已完成,我需要隐藏与该作业关联的特定微调器。