1、创建HTML页面:构建一个基本的HTML页面结构,包括一个用于显示表格的容器元素(如<div>
或<table>
)。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Ajax表格数据展示</title> </head> <body> <h1>数据表格</h1> <table id="dataTable" border="1"> <thead> <tr> <th>ID</th> <th>姓名</th> <th>年龄</th> </tr> </thead> <tbody> <!-表格数据将通过Ajax动态填充 --> </tbody> </table> <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> <script src="script.js"></script> </body> </html>
2、编写JavaScript代码:在script.js
文件中,使用Ajax发起HTTP请求以获取服务器端的数据,假设服务器提供了一个API接口/getData
返回JSON格式的数据,可以使用原生JavaScript的XMLHttpRequest
对象或jQuery的$.ajax()
方法来实现。
使用原生JavaScript:
document.addEventListener('DOMContentLoaded', function () { var xhr = new XMLHttpRequest(); xhr.open('GET', '/getData', true); xhr.onreadystatechange = function () { if (xhr.readyState == 4 && xhr.status == 200) { var data = JSON.parse(xhr.responseText); var tableBody = document.getElementById('dataTable').getElementsByTagName('tbody')[0]; data.forEach(function (item) { var row = tableBody.insertRow(); var cell1 = row.insertCell(0); var cell2 = row.insertCell(1); var cell3 = row.insertCell(2); cell1.innerHTML = item.id; cell2.innerHTML = item.name; cell3.innerHTML = item.age; }); } }; xhr.send(); });
使用jQuery:
$(document).ready(function () { $.ajax({ url: '/getData', type: 'GET', dataType: 'json', success: function (data) { var tableBody = $('#dataTable tbody'); data.forEach(function (item) { var row = '<tr><td>' + item.id + '</td><td>' + item.name + '</td><td>' + item.age + '</td></tr>'; tableBody.append(row); }); }, error: function () { alert('获取数据失败!'); } }); });
3、配置服务器端:确保服务器端有一个提供数据的接口,以Node.js为例,可以使用Express框架来创建一个简单的API:
const express = require('express');
const app = express();
const port = 3000;
app.get('/getData', (req, res) => {
res.json([
{ id: 1, name: '张三', age: 25 },
{ id: 2, name: '李四', age: 30 },
{ id: 3, name: '王五', age: 28 }
]);
});
app.listen(port, () => {
console.log(Server running at http://localhost:${port}/
);
});
4、运行项目:启动服务器,然后在浏览器中打开HTML页面,即可看到通过Ajax从服务器获取的数据填充到表格中。
1、问:如果服务器返回的数据格式不是JSON,而是XML,应该如何处理?
答:如果服务器返回的是XML格式的数据,可以在Ajax请求的回调函数中使用responseXML
属性来解析XML数据,使用jQuery时可以这样处理:
$.ajax({ url: '/getData', type: 'GET', dataType: 'xml', success: function (xml) { var tableBody = $('#dataTable tbody'); $(xml).find('item').each(function () { var id = $(this).find('id').text(); var name = $(this).find('name').text(); var age = $(this).find('age').text(); var row = '<tr><td>' + id + '</td><td>' + name + '</td><td>' + age + '</td></tr>'; tableBody.append(row); }); }, error: function () { alert('获取数据失败!'); } });
假设XML数据的结构如下:
<items> <item> <id>1</id> <name>张三</name> <age>25</age> </item> <item> <id>2</id> <name>李四</name> <age>30</age> </item> <!-更多item节点 --> </items>
2、问:如何在Ajax请求中传递参数给服务器端?
答:可以通过Ajax请求的data
选项来传递参数,如果要根据用户输入的条件查询数据,可以在用户输入完成后发起带有参数的Ajax请求,以jQuery为例:
$('#searchButton').click(function () { var keyword = $('#searchInput').val(); $.ajax({ url: '/searchData', type: 'GET', data: { keyword: keyword }, dataType: 'json', success: function (data) { var tableBody = $('#dataTable tbody').empty(); data.forEach(function (item) { var row = '<tr><td>' + item.id + '</td><td>' + item.name + '</td><td>' + item.age + '</td></tr>'; tableBody.append(row); }); }, error: function () { alert('获取数据失败!'); } }); });
在服务器端,可以使用相应的方法获取请求参数,在Node.js的Express框架中,可以使用req.query
来获取URL中的查询参数:
app.get('/searchData', (req, res) => { var keyword = req.query.keyword; // 根据keyword进行数据查询和过滤操作... res.json([/ 查询结果 /]); });