从ajax调用获取数据

时间:2018-10-17 13:25:25

标签: javascript php ajax http mysqli

我有一个选择框,我可以选择我的客户,每个客户可以有1个或多个网站,因此,当您更改客户选择时,网站的选择框也应该更改,但是主要问题是我无法填写这些网站带有选项的选择框。

我认为这应该是返回数组之类的最佳方法。

2 个答案:

答案 0 :(得分:0)

尝试为您的ajax成功添加这样的内容:

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

基本上,使用要显示的信息创建一个数组是一个好主意。 但是您也应该尝试在选择值上使用一个值。因此,当您选择一个选项时,系统将知道它的ID。 -> dropdown.options[dropdown.options.length] = new Option(element, 'ID of Array Element', false, false);

答案 1 :(得分:0)

我花了一些时间,但写了一些可能有效且简单的东西。另外,如果您使用的是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 post变量,并回显出将填充第二个下拉列表的选项。

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会将选定的客户端ID发送到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>

希望这对您或其他任何人都有帮助。

P.S:如果我的代码中有任何错误,我不是mysqli_ *用户,请告诉我。我还使用了准备好的语句,其中第二个PHP绑定了该值,该值更加安全并防止SQL注入。