关于使用ajax删除管理员
<% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> <!DOCTYPE html> <html> <head> <base href="<%=basePath%>"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <script usertype="text/javascript" src="<%=basePath%>/resources/js/jquery-1.4.2.js"></script> <title>管理员查询</title> </head> <body> <center> <h1>管理员查询</h1> <hr> <table cellspacing="0px" cellpadding="0px" border="1px" width="600px"> <thead> <tr> <th>用户名</th> <th>密码</th> <th>类型</th> <th>操作</th> </tr> </thead> <tbody id="cont"> <c:forEach items="${userList}" var="user"> <tr > <td>${user.username}</td> <td>${user.password}</td> <td>${user.usertype}</td> <input type="hidden" id="yc" name="yc" value="${user.username}"> <td><a href="/delUser" id="del" class="${user.username}" onclick="refresh();" >删除</a></td> </tr> </c:forEach> </tbody> </table> </center> </body> <script usertype="text/javascript"> function refresh() { $.ajax({ url:"<%=basePath%>/delUser", type:"post", data:{"username":$("input[name=yc]").val(),}, dataType:"json", success:function(result){ var userList=eval(result); var content=null; for(var i in userList){ var name=userList[i].username; var password=userList[i].password; var usertype=userList[i].usertype; content=content+"<tr><td>"+name+"</td><td>"+password+"</td><td>"+usertype+"</td></tr>" } $("#cont>tr").remove(); $("#cont").html(content); } }); } </script> </html>
package com.java.servlet; import com.java.data.LocalCache; import org.json.JSONObject; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.List; import java.util.Objects; public class SelectUsersServlet extends HttpServlet { @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { if(Objects.equals(request.getServletPath(),"/SelectUsersServlet")){ List userList=LocalCache.getUser(); request.getSession().setAttribute("userList",userList); request.getRequestDispatcher("views/biz/selectUsers.jsp").forward(request,response); }else if(Objects.equals(request.getServletPath(),"/delUser")){ String username=request.getParameter("username"); System.out.println(username); LocalCache.delUser(username); List userList=LocalCache.getUser(); JSONObject jsonObject=new JSONObject(userList) ; response.getOutputStream().write(jsonObject.toString().getBytes("utf-8")); // request.getRequestDispatcher("views/biz/selectUsers.jsp").forward(request,response); return; } } }
点击删除后只显示一个{"empty":true} 不知道什么意思 ,然后根据控制台的打印,Servlet那边应该是接收了两次数据,第一次收到了正确的数据,并且删除了,第二次为空,请问下老师如何解决这些问题
0
收起
正在回答
2回答
<a href="/delUser" id="del" class="${user.username}" onclick="refresh();" >
两次请求应该是refresh中的<%=basePath%>/delUser和标签中的href="/delUser",href="/delUser"这边貌似什么都没有传过去,然后打印下一List userList=LocalCache.getUser()这边的userList看看,大概知道jsonObject传了些什么东西回去,看看能不能找出显示{"empty":true}的原因,因为我不知道你是怎么表示user的,反正我是用url传参没用ajax
chrismorgen
2018-08-10 11:55:48
建议同学将LocalCache类中的代码也粘贴上来,方便老师帮你调试,并针对性的为你解答,祝学习愉快~
从网页搭建入门Java Web2018版
- 参与学习 人
- 提交作业 1088 份
- 解答问题 10204 个
如果你有Java语言基础,又想以后从事Java Web开发,那么本路径是你的不二选择!本路径从网页搭建开始入手,通过大量案例来学习Java Web基础。定能助你完成Java Web小白的蜕变!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星