这是一个典型的动态表单填充场景,当用户在某个字段(如客户ID、产品编号等)输入数据后,通过AJAX技术向服务器发送请求,服务器查询数据库并返回相关数据,然后自动填充表单的其他字段。
<!DOCTYPE html>
<html>
<head>
<title>动态表单填充示例</title>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
</head>
<body>
<form id="myForm">
<label for="product_id">产品ID:</label>
<input type="text" id="product_id" name="product_id" onblur="getProductDetails(this.value)">
<br>
<label for="product_name">产品名称:</label>
<input type="text" id="product_name" name="product_name" readonly>
<br>
<label for="price">价格:</label>
<input type="text" id="price" name="price" readonly>
<br>
<label for="description">描述:</label>
<textarea id="description" name="description" readonly></textarea>
<br>
<input type="submit" value="提交">
</form>
<script>
function getProductDetails(productId) {
if(productId === '') {
return;
}
$.ajax({
url: 'get_product_details.php',
type: 'POST',
dataType: 'json',
data: {product_id: productId},
success: function(response) {
if(response.status === 'success') {
$('#product_name').val(response.data.product_name);
$('#price').val(response.data.price);
$('#description').val(response.data.description);
} else {
alert(response.message);
$('#product_id').val('').focus();
}
},
error: function() {
alert('请求失败,请重试');
}
});
}
</script>
</body>
</html>
<?php
// get_product_details.php
header('Content-Type: application/json');
// 数据库连接配置
$dbHost = 'localhost';
$dbUser = 'username';
$dbPass = 'password';
$dbName = 'database_name';
// 创建数据库连接
$conn = new mysqli($dbHost, $dbUser, $dbPass, $dbName);
if ($conn->connect_error) {
die(json_encode(['status' => 'error', 'message' => '数据库连接失败']));
}
// 获取产品ID
$productId = isset($_POST['product_id']) ? $_POST['product_id'] : '';
if(empty($productId)) {
echo json_encode(['status' => 'error', 'message' => '产品ID不能为空']);
exit;
}
// 查询产品信息
$stmt = $conn->prepare("SELECT product_name, price, description FROM products WHERE product_id = ?");
$stmt->bind_param("s", $productId);
$stmt->execute();
$result = $stmt->get_result();
if($result->num_rows > 0) {
$row = $result->fetch_assoc();
echo json_encode([
'status' => 'success',
'data' => [
'product_name' => $row['product_name'],
'price' => $row['price'],
'description' => $row['description']
]
]);
} else {
echo json_encode(['status' => 'error', 'message' => '未找到该产品']);
}
$stmt->close();
$conn->close();
?>
原因:可能是事件绑定不正确或JavaScript错误 解决:
原因:可能是DOM元素ID不匹配或JSON解析问题 解决:
原因:未使用预处理语句 解决:
原因:数据库查询效率低 解决:
没有搜到相关的文章