【发布时间】:2015-07-06 11:00:55
【问题描述】:
我有一个我正在工作的应用程序的小型登录表单,并且我有一个 ajax 请求到一个重定向到新页面的 servlet(登录成功后)。
所以基本上这是理论上可行的 Java 类中的代码。
根据 JAVA CLASS 的要求包含的代码:
PrintWriter out = response.getWriter();
response.sendRedirect("http://stackoverflow.com/");
try {
out.println(response);
out.flush();
} finally {
out.close();
}}
这是 javacript 代码,它是按下登录按钮时调用的函数的一部分
根据要求为 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 方面:
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));
在 JAVASCRIPT 方面:
$j.ajax({type: "GET", url: "LoginHandler", data:prmVlr,traditional:true,dataType: "json", cache:false}).done(function(response){
window.location.href = response.redirect;
}
我不知道在这之后 Session 会发生什么,因为我仍在编写课程代码。我不知道为什么响应不起作用,可能是因为我的登录表单调用了一个 javascript 函数,该函数对密码进行了编码,然后在 SERVLET 端请求了登录函数。
【问题讨论】:
-
请在问题中包含代码。这些图像将来可能会从 postimg.org 中删除,这个问题将毫无用处。谢谢!
-
我删除了图片并添加了代码,谢谢
-
通常您会发出 POST 并让服务器端执行重定向。 en.wikipedia.org/wiki/Post/Redirect/Get.
-
谢谢,我已将表单更改为发布并更改了响应类型。现在我可以通过使用 firefox 检查元素来查看 url,我得到类似“GET XHR http:localhost:8080/thepage”的内容,他找到了它,但仍然没有将我从当前页面重定向到新页面
标签: javascript java json redirect