我正在通过 Jquery Ready 函数进行一些 Ajax 调用。在后端处理之后,我在 Session 中设置了一些变量。当回到我的同一个 JSP 页面时,我试图打印这些变量,但是当页面第一次加载时,这些变量是空的。如果我重新加载页面,我可以看到变量的值。我不确定我错在哪里。
JSP 上的 Ajax 调用
jQuery(document).ready(function() {
var myToy = 'B';
var url="/myBuysAjaxCall.ac?&myToy="+myToy;
if(window.XMLHttpRequest) {
AJAX = new XMLHttpRequest();
} else if(window.ActiveXObject) {
if(ms_xmlhttp) {
AJAX = new ActiveXObject(ms_xmlhttp);
} else {
var versions=["Msxml2.XMLHTTP.7.0", "Msxml2.XMLHTTP.6.0", "Msxml2.XMLHTTP.5.0", "Msxml2.XMLHTTP.4.0", "Msxml2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"];
for(var i=0; i<versions.length; i++) {
try {
AJAX = new ActiveXObject(versions[i]);
if(AJAX) {
ms_xmlhttp = versions[i];
}
} catch(e) {
//do nothing. go to next version and try it.
}
}
}
}
AJAX.onreadystatechange = processMyToy;
AJAX.open("GET", url, true);
console.log("Ajax call made..");
AJAX.send(null);
});
function processMyToy() {
if (AJAX.readyState == 4) { // Complete
if (AJAX.status == 200) { // OK response
var returnedValue = AJAX.responseText;
console.log("Something came in Response ");
var obj1FromSession= '<c:out value="${obj1FromSession}"/>';
var obj2FromSession= '<c:out value="${obj2FromSession}"/>';
var obj3FromSession= '<c:out value="${obj3FromSession}"/>';
console.log(obj1FromSession);
console.log(obj2FromSession);
console.log(obj3FromSession);
}
}
});
后端代码
public void loadandProcessMyToy() throws Exception{
Context contextObj = ContextHelper.getContext();
String myToy = (String) contextObj.getObjectFromRequest("myToy");
If Condition{
String obj1FromSession="Hello 1";
String obj2FromSession="Hello 2";
String obj3FromSession="Hello 3";
ContextHelper.getContext().setObjectInSession("obj1FromSession",obj1FromSession);
ContextHelper.getContext().setObjectInSession("obj2FromSession",obj2FromSession);
ContextHelper.getContext().setObjectInSession("obj3FromSession",obj3FromSession);
}
}
注意:-第一次加载页面时,它在 Ajax 响应部分中显示为空。在重新加载页面(通过 F5 )时,它按预期打印 Hello1, Hello2..。
我只想查看第一次加载的值。请帮忙。