java - 如何通过单击按钮运行在 jsp 中声明的函数
问题描述
当我单击按钮时,我正在尝试运行我在 jsp (<%! %>) 中声明的函数。我不想加载新页面,我想留在同一页面上并执行某些操作。
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1" import="hitchhike.*"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Loading Route</title>
</head>
<body>
<%!
String login;
String adresseOrigin;
String adresseDestination;
Adresse origin;
Adresse destination;
Itineraire itineraire;
%>
<%
login=request.getParameter("login");
adresseOrigin=request.getParameter("inputOrigin");
adresseDestination=request.getParameter("inputDestination");
origin=new Adresse(adresseOrigin);
destination=new Adresse(adresseDestination);
origin.generateAdresse();
destination.generateAdresse();
itineraire=new Itineraire(origin, destination);
itineraire.calculItineraire();
%>
<%=origin.getAdresse() %>
</br>
<%=destination.getAdresse() %>
</br>
<%=itineraire.getTemps() %>
<button type="submit" class="btn btn-primary" onclick="valider()">Validate</button>
</body>
</html>
<%!
void valider(){
RouteDAO routeDAO=new RouteDAO();
Route route=new Route(login,
origin.getAdresse(),
""+origin.getcoordX(),
""+origin.getCoordY(),
destination.getAdresse(),
""+destination.getcoordX(),
""+destination.getCoordY(),
itineraire.getTempsSec()
);
routeDAO.addRoute(route);
}
%>
这是我的代码,我想运行的函数是最后的函数( valider() )。但是当我单击按钮时出现错误“未定义验证器”我宁愿不添加 jquery。
谢谢你帮助我
解决方案
onclick 事件只能绑定到 JS/Jquery 函数,并且其中的代码<%! ... %>
被编译成 java(后端代码)。
您必须将该函数移动到另一个 JSP/后端 java 代码中,作为 onclick 事件函数的一部分进行 AJAX 调用。
在同一目录级别创建一个新的 JSP,比如 validator.jsp。validator.jsp 将具有:
<%!
RouteDAO routeDAO=new RouteDAO();
Route route=new Route(login,
origin.getAdresse(),
""+origin.getcoordX(),
""+origin.getCoordY(),
destination.getAdresse(),
""+destination.getcoordX(),
""+destination.getCoordY(),
itineraire.getTempsSec()
);
routeDAO.addRoute(route);
%>
在实际的 JSP 中添加一个 JS、JQuery 函数,如下所示:
function validator() {
$.ajax({
url: 'validator.jsp', // Change the relative path if needed
type: "GET", // This is optional and defaults to GET as well
error : function(){
console.log('Error in the AJAX call');
},
success: function(msg){
console.log(msg);
}
}
推荐阅读
- swift - SwiftUI:如何更改 Slider 的范围?
- css - 禁用弹出背景滚动
- r - 在 R Shiny 中使用 renderUI 时,如何使我的 selectizeInput 持久化?
- android - 具有多个布局的 RecyclerView 未正确更新或在新数据上崩溃
- c# - c# XDocument.Root.Add 不添加任何元素
- c - 在 C 语言中使用宏是可移植的吗?
- python - 在 Python 中从 JSON 文件中提取数据
- python - Seaborn 散点图用循环绘制多个图
- java - 为什么我的 JPanel 没有绘制我的 BufferedImage?
- c++ - 制作一个函数,打印在 c++ 中作为参数给出的任何变量