首页  >  问答  >  正文

标题重写:在提取URL中的文本时,使用$_GET返回的结果是未定义的

我正在尝试使用$_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粉895187266P粉895187266427 天前574

全部回复(1)我来回复

  • P粉811349112

    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;
    });
    

    这应该可以工作,或者至少能帮助您解决下一个错误。

    回复
    0
  • 取消回复