gpt4 book ai didi

javascript - 使用ajax开发登录页面失败

转载 作者:行者123 更新时间:2023-12-01 16:10:34 24 4
gpt4 key购买 nike

我一直在尝试使用 ajax 和 servlet 开发登录页面。但是我还没有成功创建一个。结果总是和我想象的不一样。我什至尝试引用以前成功的文件,但我仍然失败。

这些是我的代码:

  1. index.html
 <form id="loginFrm">
<div class="imgcontainer">
<img src="img_avatar2.png" alt="Avatar" class="avatar">
</div>

<div class="container">

<input type="radio" value="Urusetia" name="loginRole">Urusetia<br>
<input type="radio" value="Penyelaras PITA" name="loginRole">Penyelaras PITA<br>
<input type="radio" value="Penyelia" name="loginRole">Penyelia<br>
<input type="radio" value="Penilai" name="loginRole">Penilai<br>
<input type="radio" value="Pelajar" name="loginRole">Pelajar<br>

<label for="uname"><b>Username</b></label>
<input type="text" placeholder="Enter Username" id="username" required>

<label for="psw"><b>Password</b></label>
<input type="password" placeholder="Enter Password" id="password" required>

<button type="submit">Login</button>
<label>
<input type="checkbox" checked="checked" name="remember"> Remember me
</label>
</div>

<div class="container" style="background-color:#f1f1f1">
<button type="button" class="cancelbtn">Cancel</button>
<span class="psw">Forgot <a href="#">password?</a></span>
</div>
</form>
  1. index.js
$(function(){
$("#loginFrm").submit(function(e){
e.preventDefault();
e.stopPropagation();
var username = $("#username").val();
var password = $("#password").val();



var datalist = "username="+username+"&password="+password;


$.ajax({
type:"post",
url:"LogMasuk",
data:datalist,
cache: false,
success: function(mydata){

var myData = JSON.parse(mydata);
if(myData.status === 1){
alert("Success");
sessionStorage.token = username;
location.href = "dashboard.html";
}else if(myData.status === 0){
alert("User not found.");
}
},
error: function(){
console.log("AJAX error.");
}
});
});
});
  1. LogMasuk.java
public class LogMasuk extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

JSONObject jo = new JSONObject();
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
/* TODO output your page here. You may use following sample code. */
String username = request.getParameter("username");
String password = request.getParameter("password");

jo = dbAPI.LogMasuk(username, password);

} finally {
out.print(jo);
out.close();
}
}

和引用数据库的文件

public static JSONObject LogMasuk(String username, String password){
JSONObject jo = new JSONObject();
boolean exist = false;

try{
con = conMan.getConnection();
String sql = "SELECT * FROM pelajar WHERE username=? AND password=?";
PreparedStatement ps = con.prepareStatement(sql);
ps.setString(1, username);
ps.setString(2, password);
rs = ps.executeQuery();

while(rs.next()){
exist = true;
}
if(exist){
jo.put("status", 1);
}
else
jo.put("status", 0);
}
catch(SQLException e){
jo.put("status", -1);
}
return jo;

每次我总是在网络选项卡下的浏览器控制台中点击 {} 响应,即使状态代码正常也是如此。

提前致谢。

最佳答案

您的问题是由错误的异常处理引起的。

您的代码抛出异常,很可能是 JDBC 驱动程序上的 ClassNotFoundException,但您基本上是通过强制关闭 finally 中的响应主体来完全抑制它> 阻止。

try {
// ...
} finally {
out.print(jo);
out.close(); // BAD! Remove this line!
}

通过这种方式,您基本上可以防止服务器显示其默认错误响应,该响应通常包含堆栈跟踪,从而有效地回答您的实际问题。

更好的是,不要像在 servlet 中那样处理异常。完全删除 try-finally block 。

// ...
out.print(jo);

如果有的话,您应该在 catch block 中将任何已检查的异常作为 ServletException 重新抛出。

try {
// ...
out.print(jo);
} catch (SomeCheckedException e) {
throw new ServletException(e);
}

这样服务器就能正确处理,你可以在web.xml中配置错误响应体。

另见:

关于javascript - 使用ajax开发登录页面失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60237142/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com