📅  最后修改于: 2023-12-03 15:09:00.268000             🧑  作者: Mango
Ajax (Asynchronous JavaScript and XML) 是一种常用的前端技术,允许通过 JavaScript 后台发送异步请求,以便不必刷新整个页面即可更新部分内容。在该技术中,服务器返回的数据可以以多种格式包括 XML、JSON 或者 HTML 等形式。
下面是一个示例,向 Node.js 服务器发送 POST 请求并在不重新加载页面的情况下显示响应:
<!DOCTYPE html>
<html>
<head>
<title>Ajax Example</title>
</head>
<body>
<form id="ajax-form" method="POST">
<label for="name">Name:</label>
<input type="text" id="name" name="name">
<br>
<label for="email">Email:</label>
<input type="email" id="email" name="email">
<br>
<button type="submit">Submit</button>
</form>
<div id="output"></div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="script.js"></script>
</body>
</html>
$(document).ready(function() {
// 处理表单提交事件
$('#ajax-form').submit(function(event) {
// 阻止表单提交
event.preventDefault();
// 发送数据到服务器
$.ajax({
url: '/submit',
type: 'POST',
data: $('#ajax-form').serialize(),
success: function(response) {
// 显示服务器返回的响应
$('#output').html(response);
},
error: function(xhr) {
// 显示错误消息
$('#output').html('Error: ' + xhr.status);
}
});
});
});
const express = require('express');
const bodyParser = require('body-parser');
const app = express();
const port = 3000;
// 启用 body-parser 中间件来解析 POST 请求正文
app.use(bodyParser.urlencoded({ extended: true }));
// 处理 POST 请求 /submit
app.post('/submit', (req, res) => {
const name = req.body.name;
const email = req.body.email;
res.send(`Hello ${name}! Your email is ${email}.`);
});
// 启动服务器
app.listen(port, () => {
console.log(`Server listening on port ${port}.`);
});
在这个例子中,客户端使用 jQuery 发送 POST 请求到 Node.js 服务器,并将表单数据序列化。服务器使用 Express 框架来处理 POST 请求。在服务器端,使用 body-parser 中间件来解析 POST 请求正文。服务器返回一个 HTTP 响应,它包含用户提交的名称和电子邮件地址。
在成功响应情况下,客户端使用 jQuery 更新其 DOM,并显示服务器返回的响应消息。如果出现错误,客户端会显示一条错误消息。