Intereting Posts
Как я могу получить совпадения при использовании preg_replace в PHP? Определить, является ли текст UTF-8 полностью ASCII? Как Центрировать текст в FPDF? Как получить данные из базы данных mysql с помощью javascript? В чем смысл имени маркера PHP T_PAAMAYIM_NEKUDOTAYIM? Веб-приложение PHP: вопрос о наилучшей практике проектирования баз данных mysql PHP, MYSQL: упорядочить по дате, но пустые даты не последним PHP json_encode несколько массивов в один объект что означает запятая в выражении эха? Преобразуйте PNG в JPG и установите прозрачный фон в белый цвет с помощью ImageMagick и PHP массовое обновление списка значений из списка идентификаторов Как рассчитать высоту MultiCell / writeHTMLCell в TCPDF? Как я могу написать SQL для таблицы с таким же именем, как защищенное ключевое слово в MySql? PHP ищет строку в массиве с разным порядком слов Laravel Eloquent: как получить только определенные столбцы из объединенных таблиц

Невозможно заполнить выпадающий список цепочек с помощью Ajax и Javascript

Я новичок в Ajax, и программирование в целом, и я сейчас в разгаре обучения, когда я иду.

Моя цель

В настоящее время я пытаюсь создать раскрывающийся список цепочек с первым выпадающим списком, который заполняется из моей базы данных, а второй раскрывающийся список заполняется на основе выбора пользователя в первом раскрывающемся списке.

Мой код (Страница формы)

<?PHP session_start(); if(@$_SESSION['Auth']!=="Yes") { echo"You are not authorised to view this page.Please click <a href='Login.php'>here</a> to login."; exit(); } ?> <?PHP //Processing Code goes here ?> <!DOCTYPE html> <html> <head> <script> function getcategory() { var xmlhttp; if(window.XMLHttpRequest) { //code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp= new XMLHttpRequest(); } else { xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange=function() { if(xmlhttp.readyState==4 && xmlhttp.status==200) { alert("This is an alert 1"); document.getElementById("category").innerHTML=xmlhttp.responseText; } } alert("This is an alert 2"); xmlhttp.open("GET","AddItemCat.php","true"); alert("This is an alert 3"); xmlhttp.send(); alert("This is an alert 4"); } function getsubcategory(cat) { var xmlhttp; if(window.XMLHttpRequest) { //code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp= new XMLHttpRequest(); } else { xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange=function() { if(xmlhttp.readyState==4 && xmlhttp.status==200) { document.getElementById("subcat").innerHTML=xmlhttp.responseText; } } xmlhttp.open("GET","AddItemSubCat.php?cat="+cat,"true"); xmlhttp.send(); } </script> </head> <body> <form action="<?PHP echo $_SERVER['PHP_SELF'] ?>" name="additem" enctype="multipart/form-data" method="POST"> <table> <tr> <td>Select Category: </td> <td><script>alert("This is an alert 5");</script> <select id="category" onclick="getcategory()"> <script>alert("This is an alert 6");</script> <option id="cat"value=""></option> <script>alert("This is an alert 7");</script> </select> </td> </tr> <tr> <td>Select SubCategory</td> <td> <select id="subcat" onclick="getsubcategory(cat)"> <option value=""></option> </select> </td> </tr> </table> </form> </body> </html> 

Мой код (AddItemCat.php)

 <?PHP session_start(); if(@$_SESSION['Auth']!=="Yes") { echo"You are not authorised to view this page.Please click <a href='Login.php'>here</a> to login."; exit(); } ?> <?PHP if(@$_SESSION['Auth']=="Yes" && @$_SESSION['Type']=="Admin") { include("cxn.inc"); $userid=$_SESSION['UserId'] $branchid=0; $getcat="SELECT * FROM `Categories` WHERE `Business`=$userid AND Branch=$branchid"; $runcat=mysqli_query($cxn,$getcat) or die (mysqli_error($cxn)); while($row=mysqli_fetch_assoc($runcat)) { $cat=$row['Category']; echo"<option value=$cat>$cat</option>"; } } ?> в <?PHP session_start(); if(@$_SESSION['Auth']!=="Yes") { echo"You are not authorised to view this page.Please click <a href='Login.php'>here</a> to login."; exit(); } ?> <?PHP if(@$_SESSION['Auth']=="Yes" && @$_SESSION['Type']=="Admin") { include("cxn.inc"); $userid=$_SESSION['UserId'] $branchid=0; $getcat="SELECT * FROM `Categories` WHERE `Business`=$userid AND Branch=$branchid"; $runcat=mysqli_query($cxn,$getcat) or die (mysqli_error($cxn)); while($row=mysqli_fetch_assoc($runcat)) { $cat=$row['Category']; echo"<option value=$cat>$cat</option>"; } } ?> 

Мой код (AddItemSubCat.php)

 <?PHP session_start(); if(@$_SESSION['Auth']!=="Yes") { echo"You are not authorised to view this page.Please click <a href='Login.php'>here</a> to login."; exit(); } ?> <?PHP if(@$_SESSION['Auth']=="Yes" && @$_SESSION['Type']=="Admin") { include("cxn.inc"); //Gets the category parameter passed from the URL $cat=$_GET['cat']; $userid=$_SESSION['UserId'] $branchid=0; $getsub="SELECT * FROM `SubCategories` WHERE `Business`=$userid AND Branch=$branchid && Category==$cat"; $runsub=mysqli_query($cxn,$getsub) or die (mysqli_error($cxn)); while($row=mysqli_fetch_assoc($runsub)) { $sub=$row['Category']; echo"<option value=$sub>$sub</option>"; } } ?> в <?PHP session_start(); if(@$_SESSION['Auth']!=="Yes") { echo"You are not authorised to view this page.Please click <a href='Login.php'>here</a> to login."; exit(); } ?> <?PHP if(@$_SESSION['Auth']=="Yes" && @$_SESSION['Type']=="Admin") { include("cxn.inc"); //Gets the category parameter passed from the URL $cat=$_GET['cat']; $userid=$_SESSION['UserId'] $branchid=0; $getsub="SELECT * FROM `SubCategories` WHERE `Business`=$userid AND Branch=$branchid && Category==$cat"; $runsub=mysqli_query($cxn,$getsub) or die (mysqli_error($cxn)); while($row=mysqli_fetch_assoc($runsub)) { $sub=$row['Category']; echo"<option value=$sub>$sub</option>"; } } ?> к <?PHP session_start(); if(@$_SESSION['Auth']!=="Yes") { echo"You are not authorised to view this page.Please click <a href='Login.php'>here</a> to login."; exit(); } ?> <?PHP if(@$_SESSION['Auth']=="Yes" && @$_SESSION['Type']=="Admin") { include("cxn.inc"); //Gets the category parameter passed from the URL $cat=$_GET['cat']; $userid=$_SESSION['UserId'] $branchid=0; $getsub="SELECT * FROM `SubCategories` WHERE `Business`=$userid AND Branch=$branchid && Category==$cat"; $runsub=mysqli_query($cxn,$getsub) or die (mysqli_error($cxn)); while($row=mysqli_fetch_assoc($runsub)) { $sub=$row['Category']; echo"<option value=$sub>$sub</option>"; } } ?> 

Ошибки (или, скорее, отсутствие ошибок)

Выпадающие списки моей категории и SubCategory пусты, и ничего не отображается, и я не вижу, что именно WTF – это то, что я сделал неправильно. Могли ли вы любезно указать на мои ошибки и рассказать мне, как их исправить и улучшить? Я смотрел на экран в течение 2 часов, а я не ближе к выяснению своей ошибки, поскольку я вообще не получаю НИКАКОГО (без сообщений об ошибках), просто таблица с двумя раскрывающимися окнами, которые полностью пусты ,

Благодаря!

PS: Моя конечная цель – создать форму, подобную той, которая используется в интернет-магазинах, где пользователь может загрузить элемент вместе с сопровождающими изображениями. Мне еще предстоит добавить остальную часть формы, поскольку в ней нет смысла, так как мои дескрипторы не работают.

EDIT: добавлена ​​таблица на страницу формы, которая отсутствовала раньше. Нет видимых изменений в результатах и ​​я все еще не могу заставить код работать.

EDIT 2: Добавлены различные предупреждения для кода. Только предупреждения 5,6 и 7 работают и выходят, когда я загружаю страницу. Предупреждения в javascript не работают, поэтому проблема явно лежит в функции javascript, хотя я все еще не видно, что такое ошибка.

Solutions Collecting From Web of "Невозможно заполнить выпадающий список цепочек с помощью Ajax и Javascript"

Я бы порекомендовал 2 изменения –

1. Загрузите параметры выбора категории при загрузке страницы, вместо использования onclick .
-Добавить onload="getcategory()" в тег тела.

2.Загрузите свою подкатегорию, выбрав опции при изменении категории.
onchange="getsubcategory(this)" в ваш <select id="category"> и удалить onclick="getsubcategory(cat)" из вашего <select id="subcat" >
-Тогда используйте var catval = cat.options[cat.selectedIndex].value; в вашей getsubcategory() чтобы получить выбранное значение.

Теперь это будет выглядеть –

 ... <!DOCTYPE html> <html> <head> <script> function getcategory() { var xmlhttp; if(window.XMLHttpRequest) { //code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp= new XMLHttpRequest(); } else { xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange=function() { if(xmlhttp.readyState==4 && xmlhttp.status==200) { document.getElementById("category").innerHTML=xmlhttp.responseText; } } xmlhttp.open("GET","AddItemCat.php","true"); xmlhttp.send(); } function getsubcategory(cat) { var xmlhttp; var catval = cat.options[cat.selectedIndex].value; if(window.XMLHttpRequest) { //code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp= new XMLHttpRequest(); } else { xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange=function() { if(xmlhttp.readyState==4 && xmlhttp.status==200) { document.getElementById("subcat").innerHTML=xmlhttp.responseText; } } xmlhttp.open("GET","AddItemSubCat.php?cat="+catval,"true"); xmlhttp.send(); } </script> </head> <body onload="getcategory()"> <form action="<?PHP echo $_SERVER['PHP_SELF'] ?>" name="additem" enctype="multipart/form-data" method="POST"> <table> <tr> <td>Select Category: </td> <select id="category" onchange="getsubcategory(this)"> <option value=""></option> </select> </td> </tr> <tr> <td>Select SubCategory</td> <td> <select id="subcat"> <option value=""></option> </select> </td> </tr> </table> </form> </body> </html>