如何根据php中另一个下拉列表中的选择创建下拉列表?

如何根据php中另一个下拉列表中的选择创建下拉列表?,php,oracle,dropdown,Php,Oracle,Dropdown,这是我第一次与oracle合作。我一直在打印页面上第二个下拉列表的值。我在浏览器的“响应”选项卡中得到了正确的结果,但我不确定为什么它没有打印在主页上。在第一个下拉列表中选择一个值后,它应该在第二个下拉列表中打印名称 这是我的密码: form.php <div class="container"> <div class="panel panel-default"> <div class="panel-

这是我第一次与oracle合作。我一直在打印页面上第二个下拉列表的值。我在浏览器的“响应”选项卡中得到了正确的结果,但我不确定为什么它没有打印在主页上。在第一个下拉列表中选择一个值后,它应该在第二个下拉列表中打印名称

这是我的密码:

form.php

<div class="container">
    <div class="panel panel-default">
    <div class="panel-body">
        <div id="addroles" class="hide" role="alert">
            <button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>
            <div id="resultRoleContent"></div>
        </div>  
             <form class="cmxform" action ='functions/processform.php' id="Form1" method="post">
           <legend> Faculty Transaction Form</legend>
            <label for="addname">Please Select School</label>
           <select class="form-control" name="school" id="school">
                <?php
                $nameslist = $getschool->getSchool();
                oci_execute($nameslist, OCI_DEFAULT);
                while ($row = oci_fetch_array($nameslist, OCI_ASSOC+OCI_RETURN_NULLS)) {
                    echo '<option value="' . $row['SCHOOLNAME'] . '">' . $row['SCHOOLNAME']. '</option>';
                }
                ?>
           </select>
            <label for="names">Please Select Name</label>
          <select class="form-control" name="names" id="names">
               <option value='0' >Select Name</option>

        </select>
            
        </form>

    </div>
</div>       

&时代;
教员交易表
请选择学校
请选择名称
选择名称

$(文档).ready(函数(){
$('#school')。更改(函数(){
var schoolname=$(this.val();
$(“#名称”).find('option').not(':first').remove();
//AJAX请求
$.ajax({
url:'getUsers.php',
键入:“post”,
数据:{请求:1,小学:学名},
数据类型:“json”,
成功:功能(响应){
var len=响应长度;
对于(var i=0;i
我在浏览器响应选项卡中得到了正确的结果。它只是没有打印在网页上。错误日志中没有错误。我也提到了一些类似的问题,但没有得到答案,因此将其发布。

尝试更改:

脚本

    <script>
    $(document).ready(function(){
      $('#school').change(function(){
         var schoolname = $(this).val();
         $('#names').find('option').not(':first').remove();
         // AJAX request
         $.ajax({
           url: 'getUsers.php',
           type: 'post',
           data: {request: 1, primaryschool: schoolname},
           success: function(response){
              $("select#names").html('<option value="0">Select Name</option>');
              $("select#names").append(response);
           }
       });    
    });
 });
</script>
Jquery

...    
$.ajax({
   url: 'getUsers.php',
   type: 'post',
   data: {request: 1, primaryschool: schoolname},
   dataType: 'json',
   success: function(response){
      $("select#names").html('<option value="0">Select Name</option>');
      var arr = jQuery.parseJSON(response);
      $.each( arr, function( key, value ) {
         $("select#names").append('<option value="'+ value +'">'+ value +'</option>');
      });          
   }
});
...
。。。
$.ajax({
url:'getUsers.php',
键入:“post”,
数据:{请求:1,小学:学名},
数据类型:“json”,
成功:功能(响应){
$(“选择名称”).html(“选择名称”);
var arr=jQuery.parseJSON(响应);
$。每个(arr、函数(键、值){
$(“选择名称”).append(“”+value+“”);
});          
}
});
...
更新

以下是在我的本地主机上生成的确认:

HTML

<html>
    <head>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
        <script type="text/javascript">
            $(document).ready(function(){
                $('#school').change(function(){
                    var schoolname = $(this).val();
                    $('#names').find('option').not(':first').remove();
                    // AJAX request
                    $.ajax({
                      url: 'resourse.php',
                      type: 'post',
                      data: {request: 1, primaryschool: schoolname},
                      success: function(response){
                         $("select#depend").html('<option value="0">Select Name</option>');
                         $("select#depend").append(response);
                      }
                  });    
               });
            });        
        </script>
    </head>
    <body>
        <select id="school">
            <option value="1">One</option>
            <option value="2">Two</option>
        </select>
        <select id="depend">
            
        </select>
    </body>
</html>

$(文档).ready(函数(){
$('#school')。更改(函数(){
var schoolname=$(this.val();
$(“#名称”).find('option').not(':first').remove();
//AJAX请求
$.ajax({
url:'resource.php',
键入:“post”,
数据:{请求:1,小学:学名},
成功:功能(响应){
$(“select#depend”).html('select Name');
$(“选择依赖”).append(响应);
}
});    
});
});        
一个
两个
resource.php

<?php
$dbUser = "xxxx";
$dbPass = "xxxx";
$dbConn = "(DESCRIPTION = (ADDRESS = (PROTOCOL=TCP)(HOST=xxxx)(PORT=1521))(CONNECT_DATA=(SID=utf8devl)))";
$conn = oci_connect($dbUser, $dbPass, $dbConn);
$request = 0;
if(isset($_POST['request'])){
  $request = $_POST['request'];
 }
if($request == 1){
   $schoolpropername = $_POST['primaryschool'];
   $sql =oci_parse($conn,"SELECT * FROM person Where primaryschool = :primaryschool Order by firstname");
   oci_bind_by_name($sql, ':primaryschool', $schoolname);
   oci_execute($sql);
   $response = '';

   while($result = oci_fetch_array($sql, OCI_ASSOC+OCI_RETURN_NULLS)){
    $response .= '<option value="' . $result['FIRSTNAME'] . '">' . $result['FIRSTNAME']. '</option>' . PHP_EOL;

  }    
   echo $response;
}
...
$response = [];
    
while($result = oci_fetch_array($sql, OCI_ASSOC+OCI_RETURN_NULLS)){
   $response[] = $result['FIRSTNAME'];  
}    
echo json_encode($response);
...
<?php
$array = [
    "Alex",
    "Peter",
    "Sara"
];
$out = '';

foreach ($array as $val){
    $out .= '<option value="' . $val . '">' . $val. '</option>' . PHP_EOL;
}

echo $out;

我想你只需要附加响应。响应应该是带有选项的select标记。我怎么做?你能用代码更新/回答吗?@HAM我还注意到你希望
json
中得到响应(
ajax->dataType:'json'
),格式化,但您返回的是纯html。嘿,它也不起作用。输出保持不变,即在响应选项卡中打印,但在主页上:(@HAM查看我在ajax中的更改。尝试精确指向表单控件。同时确保您没有相同的
元素ID
ID=“name”
在您的
html
代码中的其他地方。@HAM还可以看看如何使用
Json
响应来实现这一点。嘿,它不起作用。我尝试了第一种方法,但下拉列表是空的。在响应选项卡中,它被获取。错误中没有错误log@HAM尝试给予以选择一个唯一的id,如
id=“names1234”
并在jquery中对指定的id
$(“选择名称1234”)
<html>
    <head>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
        <script type="text/javascript">
            $(document).ready(function(){
                $('#school').change(function(){
                    var schoolname = $(this).val();
                    $('#names').find('option').not(':first').remove();
                    // AJAX request
                    $.ajax({
                      url: 'resourse.php',
                      type: 'post',
                      data: {request: 1, primaryschool: schoolname},
                      success: function(response){
                         $("select#depend").html('<option value="0">Select Name</option>');
                         $("select#depend").append(response);
                      }
                  });    
               });
            });        
        </script>
    </head>
    <body>
        <select id="school">
            <option value="1">One</option>
            <option value="2">Two</option>
        </select>
        <select id="depend">
            
        </select>
    </body>
</html>
<?php
$array = [
    "Alex",
    "Peter",
    "Sara"
];
$out = '';

foreach ($array as $val){
    $out .= '<option value="' . $val . '">' . $val. '</option>' . PHP_EOL;
}

echo $out;