【问题标题】:session attribute not being set until I refresh thepage在我刷新页面之前不会设置会话属性
【发布时间】:2014-11-25 15:35:13
【问题描述】:

我有一些代码:

$(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 变量为空。当我刷新页面并返回 Web 控制台中的“页面源”时,变量设置正确。我不确定发生了什么。我的函数是否有可能在设置会话属性之前尝试调用它?

附:我知道 scriplets 不是最好的方法,但我们在这里就是这样做的。

【问题讨论】:

    标签: java javascript jquery session


    【解决方案1】:

    &lt;%=session.getAttribute("directoryString")%&gt; 只会在 JSP 呈现到 HTML 页面中时被评估。一旦呈现的 HTML 在浏览器中,它只能通过以下方式更改:

    • 重新加载页面
    • JavaScript。

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

    【讨论】:

    • 那么分配给 document.myXmlString 的值会是 session.getAttribute("directory") 方法吗?
    • 我不确定您的确切意思。它应该在 JSP 中,但这仍然不能解决您需要重新加载页面以获取属性的新值的问题。为了在不重新加载的情况下更改值,请通过 ajax 检索属性并将值分配给它。简而言之,document.myXmlString 的目标是使属性“全局”,以便可以从页面中的任何位置对其进行修改。
    • 我认为我们的想法不同,哈哈。该属性在单独的 jsp 页面中设置并在我的主页上检索。我不认为将属性设置为我的主页对我有帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-15
    • 1970-01-01
    • 2014-11-09
    • 2015-03-21
    • 2014-06-05
    • 1970-01-01
    • 2017-09-15
    相关资源
    最近更新 更多