получить переменную php из выпадающего списка без отправки страницы - PullRequest
0 голосов
/ 24 ноября 2018

Я пытаюсь получить значение из выпадающего меню, передать его как переменную php и отобразить его (на той же странице).

В раскрывающемся списке отображаются имена пользователей, но выберите их имя пользователя,который я хочу повторить.Цель состоит в том, чтобы использовать переменную для выполнения других задач, если я могу ее успешно отобразить.

Я использовал jquery и ajax, чтобы получить переменную, не отправляя страницу.Но я не могу получить переменную php.

Я прочитал несколько примеров и использовал их, но почему-то мой код не работает.Может кто-нибудь подсказать, в чем ошибка?

Вот мой код:

Test2.php

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
<table>
    <tr>
        <td>
            <select name="user" id="user" >
                  <option disabled selected value> - Select User - </option>
                  <?php 
                    $sql_select = mysqli_query($conn,"SELECT username, surname, fname FROM user WHERE v_flag != 0 ORDER BY surname ASC ");
                        while ($result = mysqli_fetch_assoc($sql_select)){
                            $name = ($result['surname']. ', '.$result['fname']);
                            echo '<option value = " '.$result['username']. '">'.$name.'</option>';
                        }
                    ?>                          
            </select>
        </td>                   
    </tr>
</table>        
<script type="text/javascript">
$(document).ready(function() {
  $("#user").change(function() {        
  var user = $(this).val();
      $.ajax({
        url:"test2.php",
        data:{username : user},
        type:'POST',
        success:function(response) {
            $("#usermame").html(response);
        }
      });
  });
}); 
</script>

    <?php
    if (isset($_POST['username'])){
        $username = $_POST['username'];     
        if (!empty($username)){
            echo 'You have selected user: '.$username ;
        }
    }
    ?>

Ответы [ 2 ]

0 голосов
/ 24 ноября 2018
  <?php
    if (isset($_GET['username'])){//only echo user name if requested from js do not include header or footer 
        $username = $_GET['username'];     
        if (!empty($username)){
            echo 'You have selected user: '.$username ;
        }
    }else{//you can include here your headers
        ?>
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
<table>
    <tr>
        <td>
            <select name="user" id="user" >
                  <option disabled selected value> - Select User - </option>
                  <?php 
                    $sql_select = mysqli_query($conn,"SELECT username, surname, fname FROM user WHERE v_flag != 0 ORDER BY surname ASC ");
                        while ($result = mysqli_fetch_assoc($sql_select)){
                            $name = ($result['surname']. ', '.$result['fname']);
                            echo '<option value = " '.$result['username']. '">'.$name.'</option>';
                        }
                    ?>                          
            </select>
        </td>  </tr> <tr><td> <span id="username">
         <?php if (isset($_POST['username'])){//show if submitted from html form
        $username = $_POST['username'];     
        if (!empty($username)){
            echo 'You have selected user: '.$username ;
        }
    }
    ?>  </span></td>                   
    </tr>
</table>        
<script type="text/javascript">
$(document).ready(function() {
  $("#user").change(function() {        
  var user = $(this).val();
      $.ajax({
        url:"test2.php?username="+user,
        success:function(response) {
            $("#username").html(response);
        }
      });
  });
}); 
</script>
 <?php
    //you can include here your footers

    }
?>
0 голосов
/ 24 ноября 2018

Ваш обработчик успеха печатает содержимое запроса в html-элементе с идентификатором username, которого нет на странице (по крайней мере, в этом фрагменте)

success:function(response) {
        $("#usermame").html(response);
    }

Попробуйте сделать запрос POST кдругой файл, потому что, в вашем случае, напечатанный контент снова будет включать select (и запрос db).

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