У меня есть 2 раскрывающихся списка с именами drpcategory
и drpitem
, как показано ниже;
<div class="form-group">
<label>Category</label>
<select class="form-control bg-dark btn-dark text-white" id="drpcategory" name="drpcategory" required>
<?php
$category = ''.$dir.'/template/post/category.txt';
$category = file($category, FILE_IGNORE_NEW_LINES);
foreach($category as $category)
{
echo "<option value='".$category."'>$category</option>";
}
?>
</select>
</div>
<div class="form-group">
<label>Item</label>
<select class="form-control bg-dark btn-dark text-white" id="drpitem" name="drpitem">
<?php
$category = $_POST["drpcategory"] ?? 'Electronics';
$item = ''.$dir.'/template/post/'.$category.'/item.txt';
$item = file($item, FILE_IGNORE_NEW_LINES);
foreach($item as $item)
{
echo "<option value='".$item."'>$item</option>";
}
?>
</select>
</div>
Как видите, в зависимости от выбранного значения drpcategory
, drpitem
должно динамически заполняться.
Если вам интересно, оба выпадающих списка пройдут через цикл PHP и заполнятся, если я установлю $category
вручную без каких-либо проверок post
.
Теперь я использую AJAXpost
чтобы опубликовать изменения в drpcategory
на той же странице, что и ниже;
<script>
$(function(){
$('#drpcategory').on('change',function()
{
$.ajax({
method: 'post',
data: $(this).serialize(),
success: function(data)
{
alert(data);
}
});
});
});
</script>
Вот браузер Chrome > Inspect > Сетевой вывод для вышеуказанного AJAX post
;

И да, я post
встраиваю этот AJAX в тот жестраница и url
: http://example.com/?page=post
, что соответствует этой вкладке «Сеть».
Я удалил поле url
из функции AJAX, потому что браузер автоматически выбирает текущую страницу, так что лучшеи нет, ручная запись каких-либо url
там не изменила того, о чем я собираюсь спросить ниже.
ВопросКак я могу сделать это drpitem
, чтобы получить значение AJAX post
ed drpcategory
и начать динамическое заполнение?
Я хочу AJAX post
на той же странице, и все это должно происходить безперезагрузка страницы.