Java变量没有在Javascript的setinterval中更新

时间:2017-09-13 06:40:07

标签: javascript java jsp

您好我正在做一个Web应用程序,我的Java代码将不断从数据库中获取数据并更新自己的静态变量。当我在控制台中输出变量时,我可以确认变量是不断更新的,但是当我想在我的Javascript函数(在我的.jsp代码中)中使用这个变量时,它总是需要初始值并且永远不会更新尽管在SetInterval函数内部。

以下是我访问Java静态变量的Javascript段。

function moveMarker(map,marker){

    setInterval( function(){  
        document.write(<%=DbManager.latitude%>);
    },5000);
}

尽管在Web应用程序运行时一致地更改了DbManager.latitude变量,但它始终在其默认值中。我期待着我可以解决这个问题的任何答案,或者也许是我试图实现的目标的替代方案。

1 个答案:

答案 0 :(得分:0)

更好的是,你可以为此采用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";
  }
}