標題重寫:在擷取URL中的文字時,使用$_GET傳回的結果是未定義的
P粉895187266
P粉895187266 2023-09-07 22:05:23
0
1
610

我正在嘗試使用$_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粉895187266
P粉895187266

全部回覆(1)
P粉811349112

您在這裡有幾個問題。首先,不要使用連結標籤中的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;
});

這應該可以工作,或至少能幫助您解決下一個錯誤。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板