调用jquery库,用ajax写的一个客户留言系统,测试改进后完美运行。分享
HTML +JS代码
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>悬浮客服图标</title>
<!-- 引入 jQuery -->
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<style>
/* 悬浮图标样式 */
.floating-service {
position: fixed;
right: 20px;
bottom: 20px;
width: 60px;
height: 60px;
background-color: #007bff;
color: white;
border-radius: 50%;
text-align: center;
line-height: 60px;
font-size: 24px;
cursor: pointer;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2);
transition: background-color 0.3s ease;
}
.floating-service:hover {
background-color: #0056b3;
}
/* 弹出对话框样式 */
.popup {
display: none;
position: fixed;
right: 30px;
bottom: 100px;
width: 300px;
padding: 20px;
background-color: white;
border-radius: 10px;
box-shadow: 0 4px 15px rgba(0, 0, 0, 0.2);
z-index: 1000;
}
.popup input, .popup textarea {
width: 100%;
padding: 10px;
margin-bottom: 10px;
border: 1px solid #ccc;
border-radius: 5px;
font-size: 14px;
}
.popup button {
width: 100%;
padding: 10px;
background-color: #007bff;
color: white;
border: none;
border-radius: 5px;
cursor: pointer;
font-size: 16px;
}
.popup button:hover {
background-color: #0056b3;
}
/* 反馈信息样式 */
.feedback {
margin-top: 10px;
font-size: 14px;
color: green;
}
.feedback.error {
color: red;
}
</style>
</head>
<body>
<!-- 悬浮客服图标 -->
<div class="floating-service" id="floatingService">
💬
</div>
<!-- 弹出对话框 -->
<div class="popup" id="popup">
<!-- 邮箱输入表单 -->
<form id="emailForm">
<input type="email" id="email" name="email" placeholder="请输入您的邮箱" required>
<button type="submit">提交</button>
</form>
<!-- 留言输入表单 -->
<form id="messageForm" style="display: none;">
<textarea id="message" name="message" rows="5" placeholder="请输入您的留言内容" required></textarea>
<button type="submit">提交留言</button>
</form>
<!-- 反馈信息 -->
<div id="feedback" class="feedback"></div>
</div>
<script>
$(document).ready(function () {
// 打开弹出对话框
$("#floatingService").click(function () {
$("#popup").show();
});
// 提交邮箱
$("#emailForm").submit(function (event) {
event.preventDefault(); // 阻止表单默认提交行为
const email = $("#email").val();
if (email && validateEmail(email)) {
// 隐藏邮箱表单,显示留言表单
$("#emailForm").hide();
$("#messageForm").show();
} else {
showFeedback("请输入有效的邮箱地址!", true);
}
});
// 提交留言
$("#messageForm").submit(function (event) {
event.preventDefault(); // 阻止表单默认提交行为
const email = $("#email").val();
const message = $("#message").val();
if (!message) {
showFeedback("请输入留言内容!", true);
return;
}
// 发送AJAX请求
$.ajax({
url: "/fedback/mail/submit-ly.php",
type: "POST",
data: { email: email, message: message },
dataType: "json", // 确保响应被解析为 JSON
success: function (response) {
if (response.success) {
showFeedback("留言提交成功!我们会尽快联系您。");
setTimeout(closePopup, 15000);
} else {
showFeedback(response.message || "提交失败,请重试!", true);
}
},
error: function (xhr, status, error) {
console.error("AJAX 请求失败:", status, error);
showFeedback("网络错误,请重试!", true);
}
});
});
// 关闭弹出对话框
function closePopup() {
$("#popup").hide();
// 重置表单
$("#emailForm").show();
$("#messageForm").hide();
$("#email").val("");
$("#message").val("");
$("#feedback").text("");
}
// 显示反馈信息
function showFeedback(message, isError = false) {
const feedback = $("#feedback");
feedback.text(message);
feedback.toggleClass("error", isError);
}
// 邮箱验证
function validateEmail(email) {
const regex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
return regex.test(email);
}
});
</script>
</body>
</html>
PHP 接收前端代码进行校验反馈。
<?php
header("Content-Type: application/json");
// 获取前端发送的数据
$email = $_POST['email'] ?? '';
$message = $_POST['message'] ?? '';
// 验证数据
if (empty($email) || empty($message)) {
echo json_encode([
'success' => false,
'message' => '邮箱和留言内容不能为空!'
]);
exit;
}
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo json_encode([
'success' => false,
'message' => '请输入有效的邮箱地址!'
]);
exit;
}
// 这里可以将数据存储到数据库
// 例如:$pdo->prepare("INSERT INTO messages (email, message) VALUES (?, ?)")->execute([$email, $message]);
// 返回成功响应
echo json_encode([
'success' => true,
'message' => '留言提交成功!'
]);