在刷新页面之前,会话属性未设置

时间:2014-09-30 21:32:16

标签: java javascript jquery session

我有一些代码:

$(document).ready(function(){    
   $(":button").click(function(){
       var formData = {"field1":field1, "oper1":oper1, "value1":value1, "field2":field2, "oper2":oper2, "value2":value2, "field3":field3, "oper3":oper3, "value3":value3};
            $.post("<%=request.getRequestURL().toString()%>getInfo.jsp", formData, function(response){alertHere(response)});    
        })
})

function alertHere(response){
        alert("Post successful");
        alert(response);
        renderResults();
}

发布表单数据和数据查询,并使用

设置会话属性
 session.setAttribute("directoryString", xml);

单击按钮时。在响应函数中,调用renderResults,它抓取返回的xml:

 function renderResults(){
       alert("inside renderResults()");
       element = document.getElementById("person");
       xmlString = '<%=session.getAttribute("directoryString")%>';
       console.log('XML String: ' + xmlString);

编写函数的其余部分以解析xml并将其显示在页面上。

我的问题是,当我第一次访问页面并发布数据时,xmlString变量为null。当我刷新页面并返回到我的Web控制台中的“页面源”时,变量设置正确。我不确定发生了什么。我的函数是否有可能在设置之前调用session属性?

P.S。我知道scriplets不是最好的方法,但这就是我们在这里做的方式。

1 个答案:

答案 0 :(得分:0)

仅在将JSP呈现到HTML页面时才会评估

<%=session.getAttribute("directoryString")%>。渲染的HTML在浏览器中后,只能通过以下方式更改:

  • 重新加载页面
  • 的JavaScript。

进行ajax调用以获取属性的更新值并更新变量(例如,您可以设置document.myXmlString = ''并在renderResults中使用该值。