关于使用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 星