这是我对用于登录表单的 servlet 的 AJAX 调用,它正确执行 servlet,并且 servlet JsonObject 在每种情况下(用户存在或不存在)正确保存信息,但 AJAX 总是转到错误函数而不是成功。
我找不到问题,错误函数中的警报显示“未定义”。当用户和密码正确时,它会正确创建 session ,但 ajax 不会重定向,因为它始终是“错误”。
希望你能帮助我。
JS-AJAX
function validarUsuario() {
var usuarioR = $("#cmpUsuario").val();
var passwordR = $("#cmpPassword").val();
if (usuarioR.length < 1) {
$("#divTextoEstado").html("<p>Se requiere un usuario.</p>");
return false;
} else if (passwordR.length < 1) {
$("#divTextoEstado").html("<p>Se requiere una contrasenha.</p>");
return false;
} else {
$.ajax({
type: "POST",
url: "IniciarSesion",
data: "usuario=" + usuarioR + "&password=" + passwordR,
dataType: "json",
success: function (data) {
//alert(data.message);
if (data.message.equals("Success")) {
window.location.href("/principal.jsp");
} else {
$("#divTextoEstado").html("<p>User or password are incorrect.</p>");
return false;
}
},
error: function (data) {
alert(data.message);
console.log(data);
return false;
}
});
}
}
服务器
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
Usuario usuario = new Usuario();
PrintWriter out = response.getWriter();
String usuarioR = request.getParameter("usuario");
String passwordR = request.getParameter("password");
boolean correcto = usuario.validarUsuario(usuarioR, passwordR);
if (correcto) {
usuario = new Usuario(usuarioR, passwordR);
HttpSession sesion = request.getSession(true);
sesion.setAttribute("nombre", usuario.getNombre());
sesion.setAttribute("apellido", usuario.getApellido());
sesion.setAttribute("usuario", usuario.getUsuario());
JsonObject myObj = new JsonObject();
myObj.addProperty("message", "Success");
System.out.println(myObj.get("message")); // To print value
out.println(myObj.toString());
} else {
JsonObject myObj = new JsonObject();
myObj.addProperty("message", "User or password are incorrect.");
System.out.println(myObj.get("message")); // To print value
out.println(myObj.toString());
}
out.close();
}
最佳答案
请更改:
response.setContentType("text/html;charset=UTF-8");
到
response.setContentType("application/json");
正如您期望 ajax 函数中的 json 结果一样。
关于javascript - ajax - jsp总是出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43906962/