我正在查看后台进程的状态。我正在尝试使用HTML5数据属性将后台进程的:status
(模型属性)传递给js轮询函数。后台作业完成后状态成功更新,但我的javascript未检索更新状态。
<div class="report" data-report-id="<%= @report.id %>" data-report-completed="<%= @report.completed? %>">
<% if @report.completed? %>
我确定@report.completed?
方法可以正常工作。这是我的javascript。访问data-report-completed
属性不会返回更新后的状态。
$(document).ready(function() {
if ($(".report-loading").length > 0) {
showActivityIndicator();
console.log("Loading...");
setTimeout(checkReportStatus, 3000);
}
});
function checkReportStatus() {
var report_completed = $(".report").attr("data-report-completed");
if (report_completed == true) {
console.log("Completed");
var report_id = $(".report").attr("data-report-id");
location.reload();
}
else {
console.log("In progress...");
setTimeout(checkReportStatus, 3000);
}
}
答案 0 :(得分:1)
你正在比较一个布尔值但你应该在检查属性值时检查字符串值。尝试改变你的比较:
if (report_completed === 'true') {
如果您需要从服务器获取值以更新您的html,您可以执行以下ajax调用。:
function checkUpdated(){
$.get('pathToCheckIfYourJobIsDone',function(isUpdated){ // isUpdated is what your server response
if(isUpdated){
$(".report").attr("data-report-completed",true);
// do whatever else you want to do when it is complete.
}else
{
setTimeout(checkUpdated,3000);
}
});
}