2.应用XMLHttpRequest对象实现信息的查询。 1)创建一组商品信息数据,并以json形式保存为文件; 2)创建一个html页面,提供查询输入框和搜索按钮,根据用户输入的商品名称,返回对应的商品信息。
时间: 2024-05-06 15:18:12 浏览: 74
这里提供一个基本的实现思路:
1. 创建商品信息数据并保存为JSON文件
可以手动创建一个JSON文件,例如 `goods.json`,里面包含多个商品信息的对象数组,每个商品信息对象包含商品名称、价格、描述等属性,例如:
```json
[
{
"name": "iPhone 12",
"price": 7999,
"description": "苹果公司最新款智能手机"
},
{
"name": "ThinkPad X1 Carbon",
"price": 9999,
"description": "联想公司旗舰商务笔记本电脑"
},
// 其他商品信息对象
]
```
2. 创建HTML页面
在HTML页面中添加一个输入框和一个搜索按钮,并为搜索按钮绑定一个事件处理函数。当用户点击搜索按钮时,执行事件处理函数,从JSON文件中读取商品信息数据,根据用户输入的商品名称进行筛选,将符合条件的商品信息展示在页面上。
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>商品查询</title>
<script>
function searchGoods() {
// 获取用户输入的商品名称
var keyword = document.getElementById('keyword').value;
// 创建一个XMLHttpRequest对象
var xhr = new XMLHttpRequest();
// 绑定xhr对象的onreadystatechange事件处理函数
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && xhr.status == 200) {
// 解析JSON数据并展示在页面上
var goods = JSON.parse(xhr.responseText);
var resultList = document.getElementById('resultList');
resultList.innerHTML = '';
for (var i = 0; i < goods.length; i++) {
if (goods[i].name.indexOf(keyword) >= 0) {
var li = document.createElement('li');
li.innerHTML = goods[i].name + ',价格:' + goods[i].price + ',描述:' + goods[i].description;
resultList.appendChild(li);
}
}
}
};
// 发送GET请求获取商品信息数据
xhr.open('GET', 'goods.json', true);
xhr.send();
}
</script>
</head>
<body>
<h1>商品查询</h1>
<label>请输入商品名称:</label>
<input type="text" id="keyword">
<button onclick="searchGoods()">搜索</button>
<ul id="resultList"></ul>
</body>
</html>
```
在上述代码中,`searchGoods()`函数实现了搜索功能。首先获取用户输入的商品名称,然后创建一个XMLHttpRequest对象,绑定其`onreadystatechange`事件处理函数。当`xhr`对象的`readyState`属性为4(表示请求已完成)且`status`属性为200(表示请求成功)时,解析JSON数据并展示在页面上。
注意,在以上示例代码中,我们使用了异步请求,即将第三个参数设置为`true`,这意味着JavaScript代码不会等待服务器响应,而是立即执行后面的代码。因此,在`xhr.onreadystatechange`事件处理函数中,我们需要判断`xhr.readyState`和`xhr.status`是否满足条件,以避免在服务器响应之前就尝试解析JSON数据。
阅读全文