gpt4 book ai didi

javascript - 继续使用属性到下一个请求的页面

转载 作者:行者123 更新时间:2023-11-29 17:19:54 24 4
gpt4 key购买 nike

最初会发布一个充满值的表格,并且可以使用 JavaScript 编码使用带有下拉按钮的列。当我单击 drop 按钮时,会弹出一个对话框,其中包含"is"或“否”,如果单击"is",我希望将该特定订单传输到另一个 servlet (/drop)。这是包含所有订单的订单页面 (/order)。如何将订单从此页面 (/order) 移至下拉页面 (/drop) 并从/order 页面删除该特定订单?这就是我所做的,但出现错误。

(/订单)

    HttpSession session = request.getSession();
if (session.getAttribute("user_name") != null) {

Class.forName("com.mysql.jdbc.Driver").newInstance();

Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/Payroll", "root", " ");
String userName = (String) session.getAttribute("user_name");
PreparedStatement ps = con.prepareStatement("SELECT * from Payroll.Order order by delDate asc");

ResultSet rs = ps.executeQuery();


out.println("<script type=\"text/javascript\">"
+ "function getConfirmation(){"
+ "var retVal = confirm(\"Add to Drop List?\");"
+ "if( retVal == true ){"
+ "document.location=\"DvDrop\";"
+ "return true;"
+ "}"
+ "else{"
+ "document.location=\"DvOrders\";"
+ "return false;"
+ "}"
+ "}"
+ "</script>" );

out.println(<strong>Welcome " + session.getAttribute("user_name") + "</strong>");

out.println("<br><h2><center><b>Order List</b></center></h2><br><table border=\"1\" style=\"width:100%;border-spacing: 0.5em;text-align: center;\">");
out.println("<tr><td><b>Order ID</b></td><td><b>Ordered Date</b></td><td><b>Ordered Time</b></td><td><b>Total Amount</b></td><td><b>Delivery Date</b></td><td><b>Add to Drop List</b></td></tr></b>");
while (rs.next()) {
out.println("<tr><td><a href = # style=\"width:90%;\">"+ rs.getString(1) + "</a></td><td>" + rs.getString(2) + "</td><td>" + rs.getTime(3) + "</td><td>" + rs.getDouble(4) + "</td><td>" + rs.getDate(5) + "</td>");
out.println("<td>" + "<input type=\"button\" value=\"Add to Drop\" name=\"AddDrop\" onClick=\"getConfirmation()\">" + "</td></tr>");
}
out.println("</table>");
out.println("</body>");
out.println("</html>");
} else {
response.sendRedirect("login.jsp?id=Your session may be expired. You have to login first");

}
} catch (Exception e) {
out.println(e);
}
}

(/下降)

PrintWriter out = response.getWriter();
try {
// PrintWriter out = response.getWriter() ;
HttpSession session = request.getSession();
if (session.getAttribute("user_name") != null) {

Class.forName("com.mysql.jdbc.Driver").newInstance();

Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/Payroll", "root", " ");
String userName = (String) session.getAttribute("user_name");
String order = (String)session.getAttribute("Orderid");
PreparedStatement ps = con.prepareStatement("delete * from Payroll.Order where Orderid = '" + order + "'");

ResultSet rs = ps.executeQuery();

}
} catch (Exception e) {
out.println(e);
}

最佳答案

我假设您的代码中遇到了 Java 编译错误。如果您的代码为 /order servlet 与您在此处发布的相同,然后在您的代码中

out.println(<strong>Welcome " + session.getAttribute("user_name") + "</strong>");

有一个错误。您没有正确定义要发送到浏览器的 HTML 字符串。您需要使用double quotes之前<strong>标签,这似乎导致 Illegal start of expression错误

试试这个。

HttpSession session = request.getSession();
if (session.getAttribute("user_name") != null) {

Class.forName("com.mysql.jdbc.Driver").newInstance();

Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/Payroll", "root", " ");
String userName = (String) session.getAttribute("user_name");
PreparedStatement ps = con.prepareStatement("SELECT * from Payroll.Order order by delDate asc");

ResultSet rs = ps.executeQuery();


out.println("<script type=\"text/javascript\">"
+ "function getConfirmation(id){"
+ "var retVal = confirm(\"Add to Drop List?\");"
+ "if( retVal == true ){"
+ "document.location=\"DvDrop?Orderid=" + id + "\";"
+ "return true;"
+ "}"
+ "else{"
+ "document.location=\"DvOrders\";"
+ "return false;"
+ "}"
+ "}"
+ "</script>" );

out.println("<strong>Welcome " + session.getAttribute("user_name") + "</strong>");

out.println("<br><h2><center><b>Order List</b></center></h2><br><table border=\"1\" style=\"width:100%;border-spacing: 0.5em;text-align: center;\">");
out.println("<tr><td><b>Order ID</b></td><td><b>Ordered Date</b></td><td><b>Ordered Time</b></td><td><b>Total Amount</b></td><td><b>Delivery Date</b></td><td><b>Add to Drop List</b></td></tr></b>");
while (rs.next()) {
out.println("<tr><td><a href = # style=\"width:90%;\">"+ rs.getString(1) + "</a></td><td>" + rs.getString(2) + "</td><td>" + rs.getTime(3) + "</td><td>" + rs.getDouble(4) + "</td><td>" + rs.getDate(5) + "</td>");
out.println("<td>" + "<input type=\"button\" value=\"Add to Drop\" name=\"AddDrop\" onClick=\"getConfirmation(\'" + rs.getString(1) + "\')\" />" + "</td></tr>");
}
out.println("</table>");
out.println("</body>");
out.println("</html>");
} else {
response.sendRedirect("login.jsp?id=Your session may be expired. You have to login first");

}
} catch (Exception e) {
out.println(e);
}

在这里,由于您需要将特定项目添加到下拉列表中,因此我建议您以这样的方式创建按钮:当您单击它时,它会发送要删除的订单的 ID。已在上述代码中进行了建议的更改。我正在做的是将当前订单的 ID 作为参数发送给函数 getConfirmation() 。如果需要,您可以查看使用浏览器的检查工具生成的最终 HTML 内容。您将看到每个按钮都调用相同的函数,但具有相应的订单 ID

此外,在您的 /drop 中servlet,您正在尝试执行数据操作(插入/更新/删除),但您正在使用 executeQuery()的方法。相反,请尝试使用 executeUpdate() ,像这样

PrintWriter out = response.getWriter();
try {
// PrintWriter out = response.getWriter() ;
HttpSession session = request.getSession();
if (session.getAttribute("user_name") != null) {

Class.forName("com.mysql.jdbc.Driver").newInstance();

Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/Payroll", "root", " ");
String userName = (String) session.getAttribute("user_name");
//String order = (String)session.getAttribute("Orderid");
String order = Integer.parseInt(request.getParameter("Orderid"));
PreparedStatement ps = con.prepareStatement("delete * from Payroll.Order where Orderid = '" + order + "'");

int rs = ps.executeUpdate();

}
} catch (Exception e) {
out.println(e);
}

除此之外,在 JavaScript 代码中,您为窗口分配了一个新位置,之后立即尝试返回一些内容。当您为文档分配新位置时,当前脚本将在此结束,新网页的脚本将开始执行。

我还建议对您的 JavaScript 代码进行一些更改。它们位于第一个代码片段中。希望这有帮助!

干杯!

关于javascript - 继续使用属性到下一个请求的页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51311919/

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