получить данные от вызова ajax - PullRequest
0 голосов
/ 17 октября 2018

У меня есть окно выбора, где я могу выбрать своих клиентов, и у каждого клиента может быть 1 или более сайтов, поэтому при изменении выбора клиента также должно измениться окно выбора сайтов, но главная проблема заключается в том, что я не могу заполнить сайтывыберите с опциями.

Я подумал, что это должен быть лучший способ вернуть массив или что-то в этом роде.

Ответы [ 2 ]

0 голосов
/ 17 октября 2018

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

Основной PHP для заполнения вашего первого раскрывающегося списка.

<?php
  include_once("../Services/Mysql.php");
  $result = $conn->query("SELECT klant_firmanaam, id From connectprolivedesk.klanten where reseller_klantnr = '5375' order by klant_firmanaam");
?>

<html>
 <head>
   <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
</head>
<body>
    <div class="form-group">
        <select name="klantenDropDown" id="klantenDropDown" class="form-control">
            <option value="" selected hidden disabled>Select Klant</option>
                <?php
                    if($result->num_rows > 0){
                        while($row = $result -> fetch_assoc()){
                            echo "<option value=".$row["id"]." >".$row["klant_firmanaam"]."</option>";
                        }
                    }
                ?>
        </select>
    </div>
        <div class="form-group">
            <select name="SiteDropDown" id="SiteDropDown" class="form-control" >
            <option value="" selected disabled hidden>Select Site</option>
            </select>
        </div>
 </div>
</body>

Этот PHP получитПеременная AJAX и выводит параметры, которые будут заполнять второй выпадающий список.

include_once("../Services/Mysql.php");

$result = $conn->prepare("SELECT site_naam FROM connectprolivedesk.sites WHERE klant_id = ?");
$result -> bind_param("s",$_POST["klantId"]);
$result -> execute();

while($row = $result -> fetchAll()){
   echo "<option value=".$row['sId'].">".$row['site_name']."</option>:
}

Этот код предназначен для вашего AJAX, который отправит ваш установленный kalntId в указанный выше второй PHP onChange вашего первого выпадающего списка.Ajax отправит идентификатор выбранного клиента в PHP, чтобы вы могли отсортировать сайты только для этого клиента.Затем захватит отраженный вывод и вставит их как опцию во второй выпадающий список.

<script>
    $(document).ready(function(){
        $('#klantenDropDown').on('change', function(){
            $.ajax({
                url: 'getSites.php',
                type: 'post', //You can use get or post
                data: {
                    'klantId':$(this).val()
                },
           dataType:'text',
           complete:function(data){
            if(data){
                    $('#SiteDropDown').html(data.responseText);
                }
            }
        }
    }
</script>

Надеюсь, это поможет вам или любому другому.

PS: я не большой mysqli_* пользователь, если есть какие-либо ошибки в моем коде, пожалуйста, сообщите.Также я использовал подготовленный оператор, в котором второй PHP связывает значение, которое намного безопаснее и предотвращает внедрение SQL.

0 голосов
/ 17 октября 2018

Попробуйте добавить что-то вроде этого к вашему успеху в ajax:

var dropdown = document.getElementById('SiteDropDown');
options.forEach(function(element))
{
    dropdown.options[dropdown.options.length] = new Option(element, '', false, false);
});  

По сути, создание массива с информацией, которую вы хотите отображать, является хорошей идеей.Но вы должны попытаться также работать со значением на выбор.Поэтому, когда вы выбираете опцию, система будет знать, что это идентификатор.-> dropdown.options[dropdown.options.length] = new Option(element, 'ID of Array Element', false, false);

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