Javascript 使用ajax从表单获取数据?
我正在尝试使用jquery从html表单获取数据。我尝试了以下方法,但由于某种原因,当我尝试在控制台中记录数据时,我总是得到null。我可能做错了什么?我想将从表单中捕获的数据以json格式发送到servlet。谢谢Javascript 使用ajax从表单获取数据?,javascript,jquery,ajax,Javascript,Jquery,Ajax,我正在尝试使用jquery从html表单获取数据。我尝试了以下方法,但由于某种原因,当我尝试在控制台中记录数据时,我总是得到null。我可能做错了什么?我想将从表单中捕获的数据以json格式发送到servlet。谢谢 <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!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>Insert title here</title>
<style>
.vertical-menu {
width: 200px;
}
.vertical-menu a {
background-color: #eee;
color: black;
display: block;
padding: 12px;
text-decoration: none;
}
.vertical-menu a:hover {
background-color: #ccc;
}
.vertical-menu a.active {
background-color: #4CAF50;
color: white;
}
</style>
</head>
<body>
<form id="register">
<div class="vertical-menu">
</div>
API Name:<br>
<input type="text" id = "apiname" name="apiname">
API ENDPOINT:<br>
<input type="text" id ="apiendpoint" name="apiendpoint">
<br>
API VERSION:<br>
<input type="text" id="apiversion" name="apiversion">
ACCESSIBLE:<br>
<input type="checkbox" name="source" value="internet"> Internet<br>
<input type="checkbox" name="source" value="vpn"> VPN<br>
<br>
<input type="submit" id="check" name="check" value="Insert">
</form>
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
<script type="text/javascript">
$(document).on("click", "#check", function() { // When HTML DOM "click" event is invoked on element with ID "somebutton", execute the following function...
event.preventDefault();
var d = $('register').serialize();
console.log("d",d);
$.ajax({
type: "POST",
url: "HomeServlet",
dataType: "text",
contentType: "application/json",
data:d,
success: function(data){
console.log(data);
},
error:function(){
console.log("error");
},
});
});
</script>
</body>
</html>
在此处插入标题
.垂直菜单{
宽度:200px;
}
.垂直菜单a{
背景色:#eee;
颜色:黑色;
显示:块;
填充:12px;
文字装饰:无;
}
.垂直菜单a:悬停{
背景色:#ccc;
}
.垂直菜单a.激活{
背景色:#4CAF50;
颜色:白色;
}
API名称:
API端点:
API版本:
可访问:
互联网
VPN
$(document).on(“click”、“#check”,function(){//当对ID为“somebutton”的元素调用HTML DOM“click”事件时,执行以下函数。。。
event.preventDefault();
var d=$('register').serialize();
控制台日志(“d”,d);
$.ajax({
类型:“POST”,
网址:“HomeServlet”,
数据类型:“文本”,
contentType:“应用程序/json”,
数据:d,
成功:功能(数据){
控制台日志(数据);
},
错误:函数(){
控制台日志(“错误”);
},
});
});
您忘记提供正确的选择器:
register
是表单so的ID
$(document).on("click", "#check", function() { // When HTML DOM "click" event is invoked on element with ID "somebutton", execute the following function...
event.preventDefault();
var d = $('#register').serialize(); // You had missed # here.
console.log("d",d);
$.ajax({
type: "POST",
url: "HomeServlet",
dataType: "text",
contentType: "application/json",
data:d,
success: function(data){
console.log(data);
},
error:function(){
console.log("error");
},
});
});
我认为这是一个适当的方式来实现你所需要的。不要忘记将事件参数添加到回调函数中 $(“#寄存器”)
<缺少代码>#
// Handle submit action on the forms.
$('#register').on('submit', function(e) {
// Prevent the browser to submit the form (we want to do it manually)
e.preventDefault();
var form = $(this);
var formdata = (window.FormData) ? new FormData(form[0]) : null;
var data = (formdata !== null) ? formdata : form.serialize();
console.log(data);
// POST request to server
$.ajax({
url : "URL/TO/SERVER",
type : "POST",
data : data,
// other fields you need
});
});