抬头望树 2024-06-21 11:05 采纳率: 83.3%
浏览 3
已结题

为什么点击删除comfirm没有作用


<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page import="java.util.List" %><%--
  Created by IntelliJ IDEA.
  User: HuaWei
  Date: 2024/5/17
  Time: 11:50
  To change this template use File | Settings | File Templates.
--%>
<%@ page language="java" contentType="text/html; charset=UTF-8"  pageEncoding="UTF-8"%>
<%@ page import="swpu.Goods" %>
<html>
<head>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
    <title>VIP专享价格</title>
    <style>
        body{
            width:500px;
            margin:0 auto;
        }
        td{
            text-align: center;
            width:150px;
            height:20px;
            border:1px solid black;
        }
        #one{
            float: right;
        }
        #five{
            text-align: center;
            font-size: larger;
        }
    </style>
</head>
<body>
<form>
    <table cellspacing="0">
        <tr>
            <td colspan="6" id="five">
                VIP专享价格
                <a href="addGoods.jsp"><input type="button" value="添加" id="one"></a>
            </td>
        </tr>
        <%
            List<Goods> list= (List<Goods>) request.getAttribute("list");
        %>
        <tr>
            <td>
                日期
            </td>
            <td>
                商品名字
            </td>
            <td>
                商品原价(元)
            </td>
            <td>
                VIP价格(元)
            </td>
            <td>
                操作
            </td>
        </tr>
        <c:forEach var="goods" items="<%=list%>">
        <tr>
                <td>${goods.date}</td>
                <td>${goods.goodsname}</td>
                <td>${goods.old_price}</td>
                <td>${goods.vip_price}</td>
            <td><a href="editGoods.jsp?date=${goods.date}&goodsname=${goods.goodsname}&old_price=${goods.old_price}&vip_price= ${goods.vip_price}">修改</a>
                |<a href="javascript:del(${goods.goodsname})">删除</a></td>
        </tr>
    </c:forEach>
</table>
</form>
<script>
    function del(gn) {
        if (confirm("确定要删除商品 " + gn + " 吗?")) {
            location.href = "/Works/del?goodsname=" + encodeURIComponent(gn);
        }
    }
</script>
</body>
</html>



这是goods.jsp

package service;

import dao.goodsDao;
import impl.GoodsDaoImpl;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.sql.SQLException;

@WebServlet(name = "delGoodsServlet",urlPatterns = "/del")
public class delGoodsServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request,response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("UTF-8");
        response.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=UTF-8");
        String gn=request.getParameter("goodsname");
         goodsDao dao=new GoodsDaoImpl();
        try {
            dao.delGoods(gn);
            response.sendRedirect("/Works/goods");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }

    }
}


这是delGoodsServlet

 public int delGoods(String goodsname) throws SQLException {
        int ret = 0;
        String url = "jdbc:mysql://localhost:3306/jsp.db?serverTimezone=GMT%2B8";
        String name = "root";
        String password = "root";
        try (Connection conn = DriverManager.getConnection(url, name, password);
             PreparedStatement pst = conn.prepareStatement("delete from goods where goodsname=?")) {
            pst.setString(1, goodsname);
            ret = pst.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
            throw e;
        }
        return ret;
    }

这是delGoods方法
为什么del函数无参的时候可以弹出来,有参的时候就弹不出来呢?之前传参用EL都可以的。

  • 写回答

2条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-06-21 11:05
    关注

    引自免费微信小程序:皆我百晓生

    根据您提供的代码,我注意到了您描述的问题可能与JavaScript函数中的参数传递方式有关。在这种情况下,我建议您检查以下几个方面:

    1. 参数传递方式:在您的JSP页面中,删除操作的链接使用了<a href="javascript:del(${goods.goodsname})">删除</a>这样的形式调用JavaScript函数del。当您给函数传递参数时,确保参数正确传递并且格式正确。在这种情况下,您似乎正确地使用了JSP表达式${goods.goodsname}来传递商品名称。然而,如果商品名称包含特殊字符或空格,可能会导致问题。您可以尝试使用encodeURIComponent来确保参数正确编码。

    修改删除链接的代码如下:

    <a href="javascript:void(0)" onclick="del('${goods.goodsname}')">删除</a>
    

    注意:这里使用javascript:void(0)是为了阻止链接的默认行为(即导航到新的URL),这样点击删除链接时不会刷新页面或跳转到其他页面。

    1. 确认函数定义:确保您的JavaScript函数del定义正确,并且可以在页面上访问到。根据您提供的代码,函数定义似乎没有问题。
    2. 检查浏览器控制台:如果您仍然遇到问题,可以尝试打开浏览器的开发者工具控制台,查看是否有任何JavaScript错误或警告。这可能会提供有关问题的更多线索。
    3. 检查其他因素:确保没有其他JavaScript代码或CSS样式干扰了删除操作的执行。有时候,其他脚本或样式可能会影响点击事件的触发。

    如果您按照上述步骤检查并修改代码后仍然遇到问题,请提供更多的代码细节或错误信息,以便我能更准确地帮助您解决问题。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 6月29日
  • 已采纳回答 6月21日
  • 创建了问题 6月21日