Я создаю простое приложение, которое позволяет пользователю просматривать и редактировать элементы в базе данных, а также добавлять новые.
Я хочу, чтобы пользователь мог щелкнуть элемент, скажем «Скрипка» ", на моей странице index. php и перенаправьте ее на новую страницу itemDisplay. php, где она отображает информацию (вес, длина, ширина, высота) элемента.
Это мой выпадающий селектор:
index. php
<div class="btn-group w-25">
<button
type="button"
class="btn btn-outline-dark dropdown-toggle"
data-toggle="dropdown"
aria-haspopup="true"
aria-expanded="false">
Items
</button>
<div class="dropdown-menu w-100">
<a
class="dropdown-item"
href="itemDisplay.php"
id = "Fiddle"
onclick = "getItemInfo(this.id)">
Fiddle
</a>
<a
class="dropdown-item"
href="itemDisplay.php"
id = "Dish"
onclick = "getItemInfo(this.id)">
Dish
</a>
<a
class="dropdown-item"
href="itemDisplay.php"
id = "Spoon"
onclick = "getItemInfo(this.id)">
Spoon
</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="./createItem.php">Create New Item</a>
</div>
</div>
А это моя функция getItemInfo (), в тот же файл:
index. js
<script>
function getItemInfo(id){
$.ajax({
url:"itemDisplay.php",
type: "POST",
data: {name: JSON.stringify(id)}
})
.fail(function(){
console.log("sad");
})
.done(function(response){
console.log(response);
});
}
</script>
Наконец, вот itemDisplay. php file:
'itemDisplay. php'
<?php
session_start();
require_once "itemManagement/dbConnect.php";
require_once "itemManagement/items.php";
$_SESSION["name"] = json_decode($_POST["name"]);
$myItem = new Item;
$test = "test";
$itemWeight = $myItem -> getItemWeight($name);
$itemLength = $myItem -> getItemLength($name);
$itemWidth = $myItem -> getItemWidth($name);
$itemHeight = $myItem -> getItemHeight($name);
echo $_SESSION["name"];
echo $test;
?>
<!DOCTYPE html>
<html lang="en">
<head>
<script src="https://code.jquery.com/jquery-2.2.4.min.js" type="text/javascript"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script type="text/javascript">
</script>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
<link rel="stylesheet" href="./problem4.css">
<link rel="stylesheet" href="https://unpkg.com/tachyons@4.10.0/css/tachyons.min.css"/>
<title>Item Display</title>
</head>
<body>
<header class="sans-serif">
<div class="cover bg-left bg-center-l">
<div class="pb5 pb6-m pb7-l">
<div class="tc-l mt4 mt5-m mt6-l ph3">
<h1 class="f2 f1-l fw2 black-90 mb0 lh-title">
<?php echo $_SESSION["name"]; ?>
</h1>
</div>
</div>
</div>
</header>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous"></script>
</body>
</html>
Зарегистрированный ответ на вызов ajax в консоли показывает это, если я нажимаю «Fiddle»: консоль
'. вывод журнала (ответа) из индекса. php '
Fiddletest
<!DOCTYPE html>
<html lang="en">
<head>
<script src="https://code.jquery.com/jquery-2.2.4.min.js" type="text/javascript"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script type="text/javascript">
</script>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
<link rel="stylesheet" href="./problem4.css">
<link rel="stylesheet" href="https://unpkg.com/tachyons@4.10.0/css/tachyons.min.css"/>
<title>Item Display</title>
</head>
<body>
<header class="sans-serif">
<div class="cover bg-left bg-center-l">
<div class="pb5 pb6-m pb7-l">
<div class="tc-l mt4 mt5-m mt6-l ph3">
<h1 class="f2 f1-l fw2 black-90 mb0 lh-title">
Fiddle </h1>
</div>
</div>
</div>
</header>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous"></script>
</body>
</html>
Моя проблема заключается в том, что после загрузки страницы itemDisplay php на экране отображается только «test» верхний левый угол. Я полностью застрял в возможности отобразить переменную $ name.
После некоторых исследований я узнал, что переменные не сохраняются между запросами, что, по моему мнению, было моей проблемой, поэтому я изменил переменную $ name на переменную сеанса. Похоже, это ни на что не повлияло.
Я также попытался поставить условное выражение для рендеринга переменной $ test только если isset ($ _ SESSION ["name])", чтобы проверить, не отображается ли переменная, потому что это было как-то НЕДЕЙСТВИТЕЛЬНО, но это все равно только что показало «тест».
Сейчас я весьма озадачен, потому что кажется, что переменная действительно установлена при загрузке этой страницы, но у меня нет доступа к ней.
Любая помощь будет принята с благодарностью!