Переменная Java не обновляется внутри setinterval Javascript

1

Привет, я сейчас делаю веб-приложение, где мой Java-код будет постоянно извлекать данные из базы данных и обновлять собственную статическую переменную. Я могу подтвердить, что переменная постоянно обновляется, когда я выводю ее на консоль, однако, когда я хочу использовать эту переменную внутри моей функции Javascript (которая находится внутри моего.jsp-кода), она всегда принимает начальное значение и никогда не обновляется несмотря на то, что он находится внутри функции SetInterval.

Ниже представлен сегмент Javascript, где я обращаюсь к статической переменной Java.

function moveMarker(map,marker){

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

Переменная DbManager.latitude всегда находится в ней по умолчанию, несмотря на то, что она постоянно изменяется при запуске веб-приложения. Я с нетерпением жду любых ответов, которые я могу решить, чтобы решить эту проблему, или, возможно, альтернативы тому, чего я пытаюсь достичь.

  • 1
    ты пробовал с цитатами? document.write ( '<% = DbManager.latitude%>');
  • 1
    страница отправляется в браузер один раз ... содержимое на сервере волшебным образом не отправляется на страницу в каком-то эфирном постоянном потоке - вам нужно взглянуть на AJAX ... вам также нужно прекратить использовать JavaScript-документ 90-х годов. написать никогда не правильную вещь для использования)
Показать ещё 1 комментарий
Теги:
jsp

1 ответ

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 и получите обновленное значение

@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, прежде чем заставить его работать как задумано, главное - как он взаимодействует с сервлетом и прочим.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню