2017-09-13 45 views
1

嗨內更新我目前在做一個Web應用程序在我的Java代碼會不斷地從數據庫中提取數據,並更新自己的靜態變量。我可以證實,該變量不斷更新,當我將它輸出在控制檯,但是當我想用我的Javascript功能(這是我的.jsp代碼中)內部的變量,它始終把初始值和永遠不會更新儘管在SetInterval函數中。Java變量不是JavaScript的setInterval的

以下是JavaScript的細分市場,我訪問Java靜態變量。

function moveMarker(map,marker){ 

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

的DbManager.latitude變量始終是在它的,儘管Web應用程序運行時始終被改變默認值。我期待着我可以解決這個問題的任何答案,或者可能替代我想要達到的目標。

+1

你用引號試過嗎?文件撰寫( '<%= DbManager.latitude%>'); – user7294900

+1

頁面被髮送到瀏覽器一旦...在服務器上的內容不是奇蹟般地在一些空靈絡繹不絕發送到頁面 - 你需要看看AJAX ......你還需要停止使用90的JavaScript(文件.write從來不是正確的東西) –

+0

感謝您的回覆。如果我可能會問,如何通過ajax將java變量加載到我的jsp/javascript文件中? – bateringzax

回答

0
更好

你可以用AJAX的GoAhead這一點。

<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 
@RequestMapping(value = "clause") 
public class ClauseController { 

    @RequestMapping(value="getUpdate") 
    @ResponseBody 
    public String selectClause(ModelMap model) { 
    DbManager dbManager = DAO.getDbManager;  
    return "dbManager.latitude"; 
    } 
} 
+0

謝謝!我或多或少能夠通過參考您的答案達到我想要的水平。在讓它按照預期工作之前,必須先進一步瞭解Ajax,主要討論它如何與servlet和東西進行通信。 – bateringzax