За последние 24 часа нас посетили 22656 программистов и 1280 роботов. Сейчас ищут 804 программиста ...

Почему данные из Ajax не уходят в post?

Тема в разделе "PHP для новичков", создана пользователем KevinSmash, 23 май 2019.

Метки:
  1. KevinSmash

    KevinSmash Новичок

    С нами с:
    13 май 2019
    Сообщения:
    17
    Симпатии:
    0
    Здравствуйте. Сделал выборку из базы данных, чтобы можно было выбрать нужное поле. Запрос уходит, во вкладке network появляется выполненная функция, статус 200 и возвращает нужное мне значение. Но при обращении к POST <code><?print_r($_POST);?></code> не приходит это значение
    Запрос к базе:

    Код (Text):
    1. $warehouse_id = array();
    2.         $q = "SELECT *
    3.     FROM `warehouse`
    4.     WHERE 1
    5.     ORDER BY `id`
    6.     ";
    7.         $r = mysql_query($q);
    8.         $warehouse_id[] = array();
    9.         while ($f = mysql_fetch_assoc($r)) {
    10.             $warehouse_id[] = array("id" => $f["id"], "name" => $f["name"]);
    11.         }
    Сам поиск:
    Код (Text):
    1. <span>Склад</span>
    2.         <select size="1" name="warehouse" class="warehouse">
    3.             <?php
    4.             foreach ($warehouse_id as $warehouse) {
    5.                 ?>
    6.                 <option value="<?= $warehouse["id"] ?>"><?= $warehouse["name"] ?></option>
    7.                 <?php
    8.             }
    9.             ?>
    10.         </select>
    11.  
    12.         <button class="get_warehouse" type="submit" style="">Поиск</button><br /><br />
    И Ajax:

    Код (Text):
    1. jQuery("select.warehouse").chosen({
    2.                     no_results_text: "Не найдено",
    3.                     placeholder_text_multiple: "Любой",
    4.                     width: "300px",
    5.                     search_contains: true,
    6.                     placeholder_text_single: "Укажите склад"
    7.  
    8.                 });
    9.                 jQuery("button.get_warehouse").click(function(){
    10.  
    11.                     var warehouse_id = jQuery("select.warehouse").chosen().val();
    12.  
    13.  
    14.                     console.log("warehouse_id="+warehouse_id);
    15.  
    16.  
    17.                     jQuery.await("open");
    18.                     jQuery.ajax({
    19.                         url: '/administrator/components/com_work_with_products/work_with_products.php',
    20.                         type: 'post',
    21.                         contentType: 'application/x-www-form-urlencoded',
    22.                         dataType: 'html',
    23.                         async: true,
    24.                         data: {
    25.                             warehouse: warehouse_id,
    26.  
    27.                         },
    28.                         success: function (data) {
    29.                             jQuery.await("close");
    30.  
    31.                         }
    32.                     });
    33.                 });
     
  2. Зингер

    Зингер Активный пользователь

    С нами с:
    20 июл 2017
    Сообщения:
    127
    Симпатии:
    7
    Где код с work_with_products.php ?
     
  3. KevinSmash

    KevinSmash Новичок

    С нами с:
    13 май 2019
    Сообщения:
    17
    Симпатии:
    0
    Это он и есть
     
  4. Зингер

    Зингер Активный пользователь

    С нами с:
    20 июл 2017
    Сообщения:
    127
    Симпатии:
    7
    Самый нижний фрагмент кода у Вас - это jQuery-скрипт, который делает AJAX-запрос к скрипту work_with_products.php, который в свою очередь должен возвращать некое значение (echo 'Какой то ответ с сервера';). В приведенных двух скриптах, я не вижу echo, поэтому и задаю вопрос: Какой из двух фрагментов Вы считаете кодом work_with_products.php?
     
  5. KevinSmash

    KevinSmash Новичок

    С нами с:
    13 май 2019
    Сообщения:
    17
    Симпатии:
    0
    Никакой. Не понял изначально что имелось ввиду. Она вызывает сама себя, как выяснилось получает нужное значение, но не обновляет элемент где это значение используется
     
  6. Зингер

    Зингер Активный пользователь

    С нами с:
    20 июл 2017
    Сообщения:
    127
    Симпатии:
    7
    Вы технологию AJAX-запроса понимаете?
    Создайте простой тестовый пример:
    1. Создайте файл test.html с кнопкой id="btn_test" и прилинкуйте в хидере jQuery и test.js
    2. Файл test.js
    Код (Javascript):
    1. $(document).ready(function () {
    2.   $('#btn_test').click(function(){
    3.     btn_click_function();
    4.   }
    5. }
    6. function btn_click_function() {
    7. alert('Ответ с браузера!');
    8. $.ajax({
    9.        type: 'POST',
    10.        url: "../ajax/test.php",
    11.        data:{
    12.           ajax_value:'Какая то переменная'
    13.         },
    14.         success:function(data_html){
    15.           alert(data_html);
    16.         }
    17.   });
    18. }
    3. Файл test.php в каталоге ajax:
    PHP:
    1. $test_value=filter_input(INPUT_POST,'ajax_value',FILTER_SANITIZE_SPECIAL_CHARS);
    2. echo 'Ответ с сервера - '.$test_value;
    Благодаря echo (и подобным командам, напр. print_r()) сервер пересылает браузеру инф-ию без перезагрузки страницы, что я считаю очень удобным.
    Пример создан "на коленке".