Javascript-处理重定向Json响应

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 {

我有一个用于我正在工作的应用程序的小登录表单,我有一个对servlet的ajax请求,该servlet在登录成功后重定向到一个新页面

基本上这是Java类中的代码,理论上是有效的

JAVA类要求包含的代码:

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();
}