我正在尝试制作2个列表,其中一个列表会根据用户从第一个列表中选择的内容进行更新。
第一个列表由“列表名称”组成......用户制作的每个“列表”包含多个电影,......
所以例如我会列出一个列表:前5个热门电影,当我在第二个列表的第一个列表中点击它时,它将显示该列表中的电影列表。
我知道我也需要使用Ajax才能实现这一点,但我被困住了。我能够从我的数据库创建第一个列表,但我不知道如何进一步?
<ul class="MyLists">
<?php
$MyList = new Lists();
$res = $MyList->GetMyLists();
foreach ($res as $r) {
echo "<li><a href='mylists.php?id=".$currentID."&listname".$r['list_name']."'>". $r['list_name'] . "</a></li>";
}
?>
</ul>
<ul class="MyLists">
<?php
<li>Here are items of the selected list</li>
?>
</ul>
我将用户在“href”部分中选择的列表的名称放在您可以告诉的位置,以便我可以使用$ _GET方法获取此名称。但我一直在尝试,但我没有让它发挥作用。
此外,任何对有用的AJAX技巧的引用都是受欢迎的。
提前感谢您的时间。
答案 0 :(得分:2)
当我做这样的事情时,这是我的方法。
首先在php中生成链接时,我给每个链接元素一个数据属性,如:
<li><a data="<?php echo $id; ?>">List Title</a></li>
$ id可以是标识列表及其元素的任何内容。你可以在php端使用的东西来提取你需要的数据。现在在你的jQuery jQuery中你可以像这样做一个简单的ajax调用:
$(document).ready(function(){
$('a').click(function(){
var id = $(this).attr("data");
$.ajax({
url: 'getlistitems.php',
type: 'GET',
data: {id:id},
success: function(data){
//I'll talk about what goes in here in a bit
}
});
});
});
让我们分解正在发生的事情。所以基本上当你点击一个链接元素时,jQuery会提取你在点击的特定链接的数据属性中保存的内容(使用$(this)),以便在ajax调用中传递给你的PHP文件。 AJAX调用的'url'参数是将从数据库中提取数据的php文件,或者保存它。 'type'参数是您正在使用的HTTP方法。这里的data参数是一个json对象,它将被放入$ _GET全局服务器端。
现在,在您的php文件中,您将使用提供的ID简单地提取数据,引用类似$ _GET ['id']。我不知道你的数据是如何保存的,所以我不能在这里得到具体的信息,但你可以在这里轻松构建一个MySQL查询,以获得点击列表的流行项目。现在,您只需将此数据恢复到客户端浏览器即可。值得庆幸的是,使用php内置的json_encode()函数非常容易。只需将所有列表项保存到一个数组中,然后将该数组提供给json_encode()并按如下方式回显:
$listitems = array();
//add all relevant items to $listitems
echo json_encode($listitems);
现在这里是成功的地方:上面ajax调用中的function(data){}参数发挥作用。 json_encoded($ listitems)参数将是成功回调的数据参数。它甚至可以变成一个可用的阵列。所以现在你需要循环遍历数据数组并使用jQuery append将其附加到第二个列表,你将全部设置好。