【发布时间】:2021-10-01 19:26:58
【问题描述】:
我正在尝试制作具有高级过滤功能的搜索页面。董事、评级和年份应显示在侧边栏上,不得重复。选中一个框时,包含电影的过滤结果应显示在同一页面上,然后在没有选中框时消失。
例如,您应该能够选中“弗朗西斯·福特·科波拉”框并获得由他执导的电影列表(“教父”和“局外人”),或者如果您单击复选框进行评级5 同样,您应该只获得“教父”等。
我从来没有使用过 ajax 或 JavaScript,并且在 PHP 方面的经验非常有限,所以我很难让任何事情发挥作用
这是端点 api.php?films 中包含的 JSON 数据的摘录,其中包含 100 部影片:
[
{
"film": "The Bridge on the River Kwai",
"director": "David Lean",
"rating": "2",
"year": "1957"
},
{
"film": "A Night To Remember",
"director": "Roy Ward Baker",
"rating": "2",
"year": "1958"
},
"film": "The Outsiders",
"director": "Francis Ford Coppola",
"rating": "4",
"year": "1983"
},
{
"film": "Asylum",
"director": "Roy Ward Baker",
"rating": "3",
"year": "1966"
},
{
"film": "Trading Places",
"director": "John Landis",
"rating": "5",
"year": "1983"
},
{
"film": "The Godfather",
"director": "Francis Ford Coppola",
"rating": "5",
"year": "1983"
}
]
这是我用复选框显示年份的代码,但我需要没有重复的年份(我需要不同的 GET 请求来仅显示年份的唯一值吗?)。至于过滤和显示结果的 JavaScript,我真的需要帮助。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script
src="https://code.jquery.com/jquery-3.6.0.min.js"
integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4="
crossorigin="anonymous"></script>
</head>
<body>
<h1>Filter films by year</h1>
<div id='items-container'>
</div>
<script>
$.ajax({
url: "api.php",
method: "GET",
dataType: 'json',
data: 'films',
success: function(data) {
console.log(typeof(data));
var html_to_append = '';
$.each(data, function(i, item) {
html_to_append +=
'<div class="col-3 mb-3"><p>' +
item.year +
'<input type="checkbox"></p></div>';
});
$("#items-container").html(html_to_append);
},
error: function() {
console.log(data);
}
});
</script>
</body>
</html>
任何帮助将不胜感激,因为我已经尝试这样做了一段时间。
【问题讨论】:
标签: javascript php jquery json ajax