搜尋

首頁  >  問答  >  主體

標題重寫:在擷取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粉895187266477 天前619

全部回覆(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
  • 取消回覆