如今,Ajax 表单是 Web 技术的重要组成部分。
它可以在不重新加载页面的情况下更新网页的某些部分,并可以接收多种格式的信息,例如 HTML、JSON 或者 XML。
让我们向我们展示一些使用 jQuery Ajax 发送 HTML 表单数据的方法。
jQuery 建议使用灵活的 ajax() 函数来提交 Ajax 表单:
<!DOCTYPE html>
<html>
<head>
<title>文档的标题</title>
</head>
<body>
<form action="path/to/server/script" method="post" id="my_form">
<label>Name</label>
<input type="text" name="name" />
<label>Email</label>
<input type="email" name="email" />
<label>Website</label>
<input type="url" name="website" />
<input type="submit" name="submit" value="Submit Form" />
<div id="server-results">
<!-- For server results -->
</div>
</form>
<script>
$("#my_form").submit(function(event) {
event.preventDefault(); //阻止默认的表单行为
let post_url = $(this).attr("action"); //获取表单操作的url
let request_method = $(this).attr("method"); //获取表单的 GET/POST 方法
let form_data = $(this).serialize(); //将表单元素值编码,便于提交
$.ajax({
url: post_url,
type: request_method,
data: form_data
}).done(function(response) { //
$("#server-results").html(response);
});
});
</script>
</body>
</html>
但是,还有一些其他需要较少代码的 jQuery 速记方法。
jQuery post() 函数是 ajax() 的简写:
<!DOCTYPE html>
<html>
<head>
<title>文档的标题</title>
</head>
<body>
<form action="path/to/server/script" method="post" id="my_form">
<label>Name</label>
<input type="text" name="name" />
<label>Email</label>
<input type="email" name="email" />
<label>Website</label>
<input type="url" name="website" />
<input type="submit" name="submit" value="Submit Form" />
<div id="server-results">
<!-- For server results -->
</div>
</form>
<script>
$("#my_form").submit(function(event) {
event.preventDefault(); //阻止默认的表单操作
let post_url = $(this).attr("action"); //获取表单操作的url
let form_data = $(this).serialize(); //将表单元素值编码,便于提交
$.post(post_url, form_data, function(response) {
$("#server-results").html(response);
});
});
</script>
</body>
</html>
jQuery get() 与 post() 相同,但使用 HTTP GET 请求:
<!DOCTYPE html>
<html>
<head>
<title>文档的标题</title>
</head>
<body>
<form action="path/to/server/script" method="post" id="my_form">
<label>Name</label>
<input type="text" name="name" />
<label>Email</label>
<input type="email" name="email" />
<label>Website</label>
<input type="url" name="website" />
<input type="submit" name="submit" value="Submit Form" />
<div id="server-results">
<!-- For server results -->
</div>
</form>
<script>
$("#my_form").submit(function(event) {
event.preventDefault(); //prevent default action
let post_url = $(this).attr("action"); //获取表单操作的url
let form_data = $(this).serialize(); //将表单元素值编码,便于提交
$.get(post_url, form_data, function(response) {
$("#server-results").html(response);
});
});
</script>
</body>
</html>
.serialize() 方法将表单输入序列化为查询字符串以使用 Ajax 发送。
要将文件上传到服务器,我们可以使用 XMLHttpRequest2 可用的 FormData 接口,该接口构造一个 FormData 对象并使用 jQuery Ajax 将其发送到服务器。
get() 和 post() 方法
jQuery get() 和 post() 方法向服务器发送请求并异步检索数据。
除了 get() 使用 HTTP GET 方法发出 Ajax 请求,而 post() 使用 HTTP POST 方法发出 Ajax 请求之外,两者都是相同的方法。
Web 浏览器使用 GET 或者 POST HTTP 方法与服务器通信。
GET 用于向指定资源请求数据,POST 用于向服务器发送数据以创建或者更新资源。
日期:2020-06-02 22:16:15 来源:oir作者:oir
