JavaScript — Использование onchange с выпадающим списком выбора

У меня возникли проблемы с событием 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 не отправляет данные.

Я использовал этот пример, но не смог заставить его работать. Как я могу заполнить выпадающий список, выбрав значение из другого выпадающего списка

Моя задача более или менее та же самая, но что-то не так с моей заменой, есть идеи, какая глупая вещь мне не хватает? Спасибо

0

Решение

onchange событие является событием браузера, поэтому test_function() должен быть функцией JavaScript. Он может использовать Ajax для отправки информации о выборе на серверный приемник PHP, но onchange событие должно быть обработано на клиенте.

Вот простой пример: Почему я не получаю значение из onChange с помощью Select? Просто поместите ваш Ajax-вызов туда, где находится оповещение (в ответе, а не в вопросе).

2

Другие решения

Что ж, 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 в фоновом режиме.

(это непроверенный код)

1

По вопросам рекламы [email protected]