У меня возникли проблемы с событием onchange. Задача представляет собой большой раздел кода для сортировки данных, но для того, чтобы попробовать изолировать код, я проследил его до события onchange, которое на самом деле не работает, и я не вижу, что не так.
<?php include("db_connect.php");
$query = 'SELECT * FROM db_class_catagories';
$result = mysqli_query($dbconnection,$query);
?><select id="primary_catagory" name="primary_catagory" onchange = "test_function(this)"style="position:absolute;left:10px;top:10px;width:315px;height:20px;z-index:11;text-align:left;">
<option value=''>Select</option>
<?php while ($row = mysqli_fetch_array($result, MYSQL_ASSOC)){
echo "<option value='" . $row['primary_catagory'] . "'>" . $row['primary_catagory'] . "</option>";}
?>
</select>
<?php
function test_function($primary_catagory) {
echo $primary_catagory;
}
?>
Этот список генерируется из базы данных и называется очень хорошо, но независимо от того, что я выберу, ничего не произойдет. Основной сценарий использовал AJAX, но опять ничего не происходило, и все, о чем я мог подумать, — onchange не отправляет данные.
Я использовал этот пример, но не смог заставить его работать. Как я могу заполнить выпадающий список, выбрав значение из другого выпадающего списка
Моя задача более или менее та же самая, но что-то не так с моей заменой, есть идеи, какая глупая вещь мне не хватает? Спасибо
onchange
событие является событием браузера, поэтому test_function()
должен быть функцией JavaScript. Он может использовать Ajax для отправки информации о выборе на серверный приемник PHP, но onchange
событие должно быть обработано на клиенте.
Вот простой пример: Почему я не получаю значение из onChange с помощью Select? Просто поместите ваш Ajax-вызов туда, где находится оповещение (в ответе, а не в вопросе).
Что ж, test_function
находится в PHP на сервере, и onchange
находится на клиенте / браузере. Они не могут говорить напрямую друг с другом.
Попробуйте добавить Javascript (и JQuery) на HTML-страницу.
<script>
function test_function(e) {
$.getJSON("server.php", {
"action": "save",
"val": $(e.currentTarget).val()
}
}
</script>
Теперь событие inching выполнит эту функцию javascript, которая загрузит эту страницу server.php в фоновом режиме.
(это непроверенный код)