【发布时间】:2017-04-04 13:49:09
【问题描述】:
我已经简化了我的代码来分解问题,并有一个带有时间戳的简单示例来说明实际出了什么问题。 所以请不要惊讶我为什么要进行 AJAX 调用,这是为了 Servlet 的真正功能。
它是一个 Servlet,以下代码是 JSP 页面的一部分,我正在使用 JAVA 1.7 和 Tomcat 7。我在 Firefox 和 Chrome 中运行它。
我的目标是从 Java 方法中检索一个值并将其写入 servlet 页面上的 DIV “ContentCharts”。 问题是 Javascript 不会更新 "zeit" 的值,并且总是将相同的时间戳写入 DIV-Container 和控制台上
$(document).ready(function()
{
function ausgabe()
{
<%
GregorianCalendar now = new GregorianCalendar();
DateFormat df = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.LONG);
String JZeit = df.format(now.getTime());
System.out.println("FKT ausgabe zeit:"+ JZeit);
%>
var zeit='<%=JZeit %>';
console.info('Zeit:', zeit);
document.getElementById('ContentCharts').innerHTML = zeit;
}
$("#subtab2").click(function()
{
$.ajax
(
{
url:'overview',
data:{dbname:this.className},
type:'get',
cache:false,
success:function(){ausgabe();},
error:function(){alert('error');}
}
);
}
}
为了测试这一点,我将 JAVA 变量 "Jzeit" 的值写入服务器日志,并在单击按钮 3 次时得到 (Click to see the Picture) 结果。正如您在此处的图片中看到的,我得到了正确的时间戳。
现在我还将 JS 变量的值 "zeit" 发布到 Firebug 控制台中。现在我得到了错误的时间戳(Click to see the Picture)
DIV 中的内容令人耳目一新,但这里的问题与控制台中的相同,始终是相同的时间戳。
这些是我的想法和问题:
为什么 JS 变量在 JAVA 中是正确的却是错误的值? 有没有办法说 JS 必须更新变量? 难道是JS保存了JAVA代码的答案,不再运行,而是运行上面的JAVA Code Snippet,因为JS和JAVA之间没有直接联系,就像价值分配一样? 我该如何解决我的问题?
如果您需要更多信息来帮助我,请索取。
【问题讨论】:
标签: javascript java jsp servlets