关于使用ajax删除管理员

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

    }
}

http://img1.sycdn.imooc.com//climg/5b6c58890001184209650393.jpg

http://img1.sycdn.imooc.com//climg/5b6c58890001e7bb15200637.jpg

点击删除后只显示一个{"empty":true} 不知道什么意思 ,然后根据控制台的打印,Servlet那边应该是接收了两次数据,第一次收到了正确的数据,并且删除了,第二次为空,请问下老师如何解决这些问题

正在回答

登陆购买课程后可参与讨论,去登陆

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

  • qq_起风了_67 提问者 #1
    我在servelt那边循环打印了一下userList,里面的值都是正确的 ,我又打印了一下ajax接受过来的值,都是空的,是不是我写的接收方法有问题
    2018-08-10 18:53:21
  • qq_起风了_67 提问者 #2
    我把 href的跳转链接去掉了,的确是这个问题才接受了两遍数据
    2018-08-10 18:54:40
  • KAGITO 回复 提问者 qq_起风了_67 #3
    jsonObject打印出来啥样的?
    2018-08-10 19:51:35
chrismorgen 2018-08-10 11:55:48

建议同学将LocalCache类中的代码也粘贴上来,方便老师帮你调试,并针对性的为你解答,祝学习愉快~

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
从网页搭建入门Java Web2018版
  • 参与学习           人
  • 提交作业       1088    份
  • 解答问题       10204    个

如果你有Java语言基础,又想以后从事Java Web开发,那么本路径是你的不二选择!本路径从网页搭建开始入手,通过大量案例来学习Java Web基础。定能助你完成Java Web小白的蜕变!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师