AJAX POST и PHP POST на той же странице - PullRequest
0 голосов
/ 03 марта 2019

У меня есть 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;

Inspect

И да, я post встраиваю этот AJAX в тот жестраница и url: http://example.com/?page=post, что соответствует этой вкладке «Сеть».

Я удалил поле url из функции AJAX, потому что браузер автоматически выбирает текущую страницу, так что лучшеи нет, ручная запись каких-либо url там не изменила того, о чем я собираюсь спросить ниже.

ВопросКак я могу сделать это drpitem, чтобы получить значение AJAX post ed drpcategory и начать динамическое заполнение?

Я хочу AJAX post на той же странице, и все это должно происходить безперезагрузка страницы.

Ответы [ 2 ]

0 голосов
/ 06 марта 2019

Наконец, после ожидания более 7 дней, пытаясь выяснить это, я не смог AJAX post на той же странице, вероятно, потому что на той же странице уже слишком много элементов <html>.Но здесь это делается с использованием внешнего post.php файла.Мне потребовались только эти изменения, чтобы получить эту работу, отличную от упомянутой в моем первоначальном вопросе выше.

<script>
$(function()
{
$('#drpcategory').change(function()
{
$.ajax({
method: 'post',
url: 'post.php',
data: $(this).serialize(),
success: function(data)
{
$('#drpitem').html(data);
}
});
});
});
</script>

Затем мне пришлось сохранить это post.php в корневом каталоге веб-сайта, где находится index.php.При необходимости измените свой каталог, а также не забудьте изменить поле url в вышеупомянутой функции AJAX.

<?php include 'config.php';?> //this is where the $dir variable is derived in my website. i had to include this since post.php is an external file that doesn't know about the variable.

<?php
$category = $_POST["drpcategory"];
$item = ''.$dir.'/template/post/'.$category.'/item.txt';
$item = file($item, FILE_IGNORE_NEW_LINES);

foreach($item as $item)
{
echo "<option value='".$item."'>$item</option>";
}
?>

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

0 голосов
/ 06 марта 2019

Вы получаете возврат всех html-элементов?Пожалуйста, сделайте 'if условие' в вашей функции php, если возникнет запрос Post, верните результат php, иначе верните html элементы.Что такое "/? Page = post" в вашем URL?пожалуйста, var_dump ($ _ POST, $ _ GET);в функции запроса ajax, пожалуйста, дайте мне ответ.В противном случае вы можете отправить этот запрос недавно созданной функции для тестирования?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...