我正在嘗試使用$_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; });
這應該可以工作,或至少能幫助您解決下一個錯誤。