嗨,我目前正在开发一个 Web 应用程序,其中我的 Java 代码将不断从数据库中获取数据并更新其自己的静态变量。当我在控制台中输出时,我可以确认该变量正在不断更新,但是当我想在我的 Javascript 函数(位于我的 .jsp 代码中)中使用此变量时,它始终采用初始值并且永远不会更新,尽管位于 SetInterval 函数中。
以下是我访问 Java 静态变量的 Javascript 段。
function moveMarker(map,marker){
setInterval( function(){
document.write(<%=DbManager.latitude%>);
},5000);
}
DbManager.latitude 变量始终保持其默认值,尽管在 Web 应用程序运行时不断更改。我期待得到解决此问题的任何答案,或者可能是我想要实现的目标的替代方案。
最佳答案
最好使用 AJAX 来实现此目的。
<script type="text/javascript">
$(document).ready(function() {
setInterval(ajaxCall, 5000); // 5 MS
});
function ajaxCall() {
$.ajax({
type: "POST",
url: "/getUpdate/" ,
success: function(result) {
document.write(result);
}
}
});
</script>
从 AJAX 调用您的 servlet/ Controller 并获取更新的值
@Controller
@RequestMapping(value = "clause")
public class ClauseController {
@RequestMapping(value="getUpdate")
@ResponseBody
public String selectClause(ModelMap model) {
DbManager dbManager = DAO.getDbManager;
return "dbManager.latitude";
}
}
关于javascript - Java 变量未在 Javascript 的 setinterval 内更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46190520/