2014-09-30 2 views
0

У меня есть некоторый код:сессии атрибут не установлен, пока не обновят thepage

$(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. Когда я обновляю страницу и возвращаюсь к «Source Source» в моей веб-консоли, переменная устанавливается правильно. Я не совсем уверен, что происходит. Возможно ли, что моя функция пытается вызвать атрибут сеанса до его установки?

P.S. Я знаю, что скрипты - это не лучший способ сделать это, но так мы здесь делаем.

ответ

0

<%=session.getAttribute("directoryString")%> будет оцениваться только при отображении JSP на HTML-страницу. После визуализации HTML в браузере, он может быть изменен только путем:

  • перезагрузки страницы
  • JavaScript.

Сделать АЯКС вызов, чтобы получить обновленное значение атрибута и обновить переменную (например, вы можете установить document.myXmlString = '' и использовать это значение в вашем renderResults.

+0

Так бы значение, присвоенное document.myXmlString быть методом session.getAttribute («directory»)? – jordaniac89

+0

Я не уверен, что вы точно имеете в виду. Он должен быть в JSP, но это все равно не решит проблему, требующую перезагрузки страницы, чтобы получить новое значение атрибут. Чтобы изменить значение без перезагрузки, извлеките атрибут через ajax и присвойте ему значение. Короче говоря, цель 'document.myXmlString' заключается в том, чтобы сделать атрибут« глобальным », чтобы его можно было модифицировать везде.на вашей странице. – SJuan76

+0

Не думаю, что мы думаем то же самое. Атрибут устанавливается на отдельной странице jsp и извлекается на моей главной странице. Я не думаю, что создание атрибута global на моей главной странице поможет мне. – jordaniac89

Смежные вопросы