Javascript-处理重定向Json响应
我有一个用于我正在工作的应用程序的小登录表单,我有一个对servlet的ajax请求,该servlet在登录成功后重定向到一个新页面 基本上这是Java类中的代码,理论上是有效的 JAVA类要求包含的代码:Javascript-处理重定向Json响应,javascript,java,json,redirect,Javascript,Java,Json,Redirect,我有一个用于我正在工作的应用程序的小登录表单,我有一个对servlet的ajax请求,该servlet在登录成功后重定向到一个新页面 基本上这是Java类中的代码,理论上是有效的 JAVA类要求包含的代码: PrintWriter out = response.getWriter(); response.sendRedirect("http://stackoverflow.com/"); try { out.println(response); out.flush(); } finally {
PrintWriter out = response.getWriter();
response.sendRedirect("http://stackoverflow.com/");
try {
out.println(response);
out.flush();
} finally {
out.close();
}}
这是JavaScript代码,它是当按下登录按钮时调用的函数的一部分
JAVASCRIPT所需的代码包括:
var prmVlr = {};
prmVlr["op"] = '2';
prmVlr["userLogin"]=userName;
prmVlr["passLogin"]=hash;
prmVlr["country"]=country;
prmVlr["database"]="CRM";
$j.ajax({type: "GET", url: "LoginHandler",
data:prmVlr,traditional:true,dataType: "json", cache:false}).done(function(response){
var data=response;
if (data.redirect) {
// data.redirect contains the string URL to redirect to
window.location.href = data.redirect;
}
})
.fail(function(){showMsgAlert('Error'+' - PP-E1003');}); }
我的想法是,当我在应用程序中开发下一个页面时,用户将被重定向到该页面。
这也是我第一次使用它,所以我不确定我是否做得正确。我可以用字符串json返回URL,然后重定向,但我不确定这是否会扰乱会话。
另外,我很抱歉,如果我不够明确,或者我打破了一些规则,我是这个网站的新手,英语不是我的主要语言
解决方案1:
所以我想出了一个解决方案,它可能不是最好的,但它是有效的
在SERVLET方面:
在JAVASCRIPT方面:
我不知道接下来的课程会发生什么,因为我还在编写课程代码。我不明白为什么响应不起作用,可能是因为我的登录表单调用了一个javascript函数,该函数对密码进行编码,然后在SERVLET端请求登录函数。因此我测试了解决方案1,它工作得非常好,与应用程序的会话或功能没有任何问题
这就是它现在的样子:
Javascript:
Java Servlet:
请在问题中包括代码。这些图片将来可能会从postimg.org上删除,而这个问题将毫无用处。谢谢我删除了图像并添加了代码,谢谢。通常你会发布帖子,让服务器端执行重定向。谢谢,我已将表格更改为post,并更改了回复类型。现在我可以通过使用firefox检查元素来查看url了,我得到了类似这样的东西get-XHR http:localhost:8080/页面,他找到了它,但仍然没有将我从当前页面重定向到新页面
System.out.println(login.getSession_id());
StringBuilder jsonStr = new StringBuilder();
jsonStr.append("{'redirect':'" + (request.getRequestURI().substring(0,request.getRequestURI().indexOf('/', 1))+"MYPAGELOCATION") +"'}");
jsonResponse = jsonStr.toString().replaceAll("'",
Character.toString((char) 34));
$j.ajax({type: "GET", url: "LoginHandler", data:prmVlr,traditional:true,dataType: "json", cache:false}).done(function(response){
window.location.href = response.redirect;
}
$j.ajax({type: "GET", url: "LoginHandler", data:prmVlr,traditional:true,dataType: "json", cache:false}).done(function(response){
if(response.valido=="1"){ //send 1 if login is valid
window.location.href = response.redirect;
}
else {
alert("ERRO NO LOGIN");
}
})
.fail(function(){showMsgAlert('Error'+' - PP-E1003');});
}
String valido="0";
try {
if (allowUser(userName, passWord,login.getDbUsr())) {
session = request.getSession();
valido="1";
session.setAttribute("logon.isDone", userName);
if ((UsersRegistados.getUsers().containsKey(
request.getRequestedSessionId()) || UsersRegistados.getUsers().containsValue(userName))) {
System.out.println("user already registered");
}
else{
UsersRegistados.setUsers(session.getId(), userName);
login.setFile(DB.toLowerCase()+"pp"); //crmpp file
login.setUcode(userCode); // ep_code
login.setUsername(userName); //epName
login.setUserType(userType);
login.setIdiom(language);
login.setPassword(passWord);
login.setSession_id(session.getId());
//Try redirecting the client to the page he first tried to access
session.setAttribute("login", login);
session.setAttribute("language", language.toUpperCase());
}
//response.sendRedirect(request.getRequestURI().substring(0,request.getRequestU RI().indexOf('/', 1))+"/Calendar/calendar.jsp");
//response.setStatus(response.SC_MOVED_TEMPORARILY);
//response.setHeader("Location", "Calendar/calendar.jsp");
//System.out.println(jsonResponse);
}
System.out.println(login.getSession_id());
StringBuilder jsonStr = new StringBuilder();
jsonStr.append("{'redirect':'" + (request.getRequestURI().substring(0,request.getRequestURI().indexOf('/', 1))+"/Calendar/calendar.jsp") +"','valido':'"+valido+"'}");
jsonResponse = jsonStr.toString().replaceAll("'",
Character.toString((char) 34));
try {
out.println(jsonResponse);
out.flush();
} finally {
out.close();
//response.sendRedirect(request.getRequestURI().substring(0,request.getRequestURI().indexOf('/', 1))+"/Calendar/calendar.jsp");
//return;
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}