<input id="keyword" type="text">
<div id="contain">
<ul id="list"></ul>
</div>
{
"0": "Head First HTML与CSS",
"1": "JavaScript高级程序设计",
"2": "JavaScript DOM编程艺术",
"3": "高性能网站建设进阶指南",
"4": "高性能网站建设指南",
"5": "Web前端黑客技术揭秘",
"6": "JavaScript权威指南",
"7": "精通CSS",
"8": "编写可维护的JavaScript",
"9": "高性能JavaScript"
}
代码都没给,谁知道你哪里写错了
不知道你这个问题是否已经解决, 如果还没有解决的话:首先,我们需要准备好HTML和data.json文件。
HTML文件如下:
<!DOCTYPE html>
<html>
<head>
<title>动态筛选JSON数据并插入HTML元素</title>
<script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
<script src="script.js"></script>
</head>
<body>
<h1>动态筛选JSON数据并插入HTML元素</h1>
<label for="keyword">请输入关键词:</label>
<input type="text" id="keyword">
<ul id="list">
</ul>
</body>
</html>
data.json文件如下:
[
{"name": "张三", "age": 20},
{"name": "李四", "age": 25},
{"name": "王五", "age": 30},
{"name": "赵六", "age": 35},
{"name": "钱七", "age": 40}
]
然后,在HTML文件中引入jQuery和我们写的JavaScript文件(script.js),在script.js文件中编写以下代码:
// 获取id为"keyword"的input元素
var keywordInput = $('#keyword');
// 给input元素绑定输入事件
keywordInput.on('input', function() {
// 获取用户输入的关键词
var keyword = keywordInput.val();
// 发送Ajax请求
$.ajax({
url: 'data.json', // 请求路径为data.json文件
method: 'GET', // 请求方式为GET
data: { // 向后端传递参数
keyword: keyword
},
success: function(data) { // 请求成功的回调函数
// 清空id为"list"的ul元素
var list = $('#list').empty();
// 遍历筛选出的数据,将每个数据项作为文本内容创建li元素并插入到id为"list"的ul标签中
for (var i = 0; i < data.length; i++) {
var item = data[i];
var name = item.name;
var age = item.age;
var li = $('<li>').text('姓名:' + name + ',年龄:' + age);
list.append(li);
}
},
error: function(jqXHR, textStatus, errorThrown) { // 请求失败的回调函数
console.log(textStatus, errorThrown);
}
});
});
代码说明:
最后,将HTML、data.json和script.js三个文件放在同一目录下,并在浏览器中打开HTML文件,我们就可以动态筛选JSON数据并插入HTML元素了。
根据您的描述,第一个错误信息可能是类似下面的内容:
Uncaught TypeError: $(...).val is not a function
这个错误表示在获取输入框的值时出现了问题,可能是因为代码中使用了错误的 jQuery 方法。
在使用 jQuery 的 Ajax 技术时,需要在 input 元素的值发生变化时触发 Ajax 请求,然后将返回的数据插入到页面中。可以使用以下代码实现:
$(document).ready(function() {
// 监听 input 元素的值变化
$('#keyword').on('input', function() {
// 获取输入框的值
var keyword = $(this).val();
// 发送 Ajax 请求
$.ajax({
url: 'data.json',
dataType: 'json',
success: function(data) {
// 筛选包含关键字的数据
var filteredData = {};
$.each(data, function(index, value) {
if (value.indexOf(keyword) !== -1) {
filteredData[index] = value;
}
});
// 清空列表
$('#list').empty();
// 将筛选出的数据插入到列表中
$.each(filteredData, function(index, value) {
$('<li>').text(value).appendTo('#list');
});
},
error: function(xhr, status, error) {
console.log('Ajax error: ' + error);
}
});
});
});
在上述代码中,我们首先监听了 input 元素的值变化事件,并在事件回调函数中获取输入框的值。然后,我们使用 jQuery 的 Ajax 方法向服务器请求数据,并在请求成功时筛选出包含关键字的数据。最后,我们清空列表并将筛选出的数据插入到列表中。
需要注意的是,代码中使用了 jQuery 的 val()
方法获取输入框的值,而不是 $().val()
。如果您在代码中使用了 $().val()
,可能会出现上述的错误信息。