我正在尝试使用$_GET从get-albums-genres.php?gid=".$id."中提取一个id,但它给我返回undefined!
在从genre表中提取数据之后,我使用数组运行了一个SQL查询来获取音乐类型的数据
$dbcursor = $db->query(" SELECT * FROM GENRES_TBL ORDER BY ID "); $genres = []; while($takegenre = $dbcursor->fetch_object()) $genres[] = $takegenre;
在此之后,我创建了一个包含<a标签的html表格,使用foreach循环为每个类型的音乐创建了超链接。
<?php foreach($genres as $gs) { $id = $gs->ID; echo " <a class='gentons' href='get-albums-genres.php?gid=".$id."'>".$gs->GENRE."</a>"; } ?> </table>
通过这些超链接,我想要显示所选类型的所有专辑的表格。为了实现这一点,我计划从href中提取id,并在SQL查询中使用它将专辑类型id连接到类型id上,但是在用$_GET提取id时,在获取专辑的php文件中声明变量并使用$_GET时,它给我返回undefined值。
$genre_id = $_GET['gid']; echo"$genre_id"; //undefined if(isset ($_GET['gid'])){ echo"yes"; }else{ echo"no"; } //yes
带有事件的Javascript代码如下:
$(document).on('click', 'a.gentons', function(e) { $.get('get-albums-genres.php?gid=' + $('input[name="gid"]').val(), function(data) { $('#albums-list').html(data); }); return false; })
这很奇怪,因为我在另一个php文件中做了完全相同的操作,我输入了艺术家的名字或最佳歌曲,然后找到并显示了他的所有专辑,而且在那里我使用$_GET方法没有任何问题。我也不明白为什么当我将光标悬停在超链接上时,它会显示链接和相应的id,但是当我尝试提取它时却出现问题。
输入图像描述
P粉8113491122023-09-08 11:42:55
您在这里有几个问题。首先,不要使用链接标签中的href(您肯定不希望任何人实际访问该URL,对吧?),让我们将href设置为#,并将我们的类型ID放在一个数据属性中。让我们在处理时将单引号和双引号弄清楚。
echo '<a class="gentons" data-gid="' . $id . '" href="#">' . $gs->GENRE . '</a>';
现在在我们的JS中,我们可以使用preventDefault()
取消事件,获取类型ID,其余的保持不变。
$(document).on('click', 'a.gentons', function (e) { e.preventDefault(); $.get('get-albums-genres.php?gid=' + $(this).data('gid'), function (data) { $('#albums-list').html(data); }); return false; });
这应该可以工作,或者至少能帮助您解决下一个错误。