我創建了一個導航欄,管理員可以使用簡單的表單添加和刪除鏈接。當提交表單以添加鏈接時,會進行AJAX調用以將新信息添加到mySQL數據庫中。作爲回調函數的一部分,導航欄更新使用下面的代碼行,以包括新的鏈接:在AJAX請求期間PHP會話無法識別
$('.nav ul').load('/getnav.php');
文件getnav.php如下:
<?php
require('/connect.php');
$query = "SELECT id, title, url
FROM nav
ORDER BY position ASC";
$result = $mysqli->query($query);
while ($data = $result->fetch_assoc()) {
if (!empty($_SESSION['valid']))
echo ' <div class="container"><button type="button" name="'.$data['id'].'" class="delButton" alt="Delete"></button></div>
';
echo ' <a href="'.$data['url'].'" alt="'.$data['title'].'">'.$data['title'].'</a>
';
}
?>
的問題是在AJAX調用中更新導航欄時,只顯示鏈接,刪除按鈕消失。 $_SESSION['valid']
已設置,所以緊跟在if之後的代碼應該執行。但是,這就是如果在AJAX調用之後缺少的代碼。我唯一的解釋是,當getnav.php被加載到.nav ul
時,會話沒有被訪問。任何人都知道這是爲什麼?
您是否在getnav.php的任何地方開始會話?我看到你試圖訪問會話變量,但直到會話開始,你不能 – clementine
哦,這可能是。我在html中使用'require('getnav.php')',並且已經在該頁面上啓動了一個會話,所以我必須在getnav.php中刪除它。我必須以某種方式來解決這個問題。 – fvgs
所以我必須在html頁面上有'session_start()',我必須在頁面上有'require('/ getnav.php')',而getnav.php也必須有'session_start()'。有關如何在不破壞會話的情況下完成此任務的想法,顯然不需要在同一頁面上調用session_start()兩次? – fvgs