使用Ajax和PHP从数据库获取数据,并将返回结果作为下拉列表

时间:2016-06-23 13:03:38

标签: javascript php jquery ajax

我知道我想要什么,但需要协助如何完成它。下面是场景:我有两个下降。第一个下拉列表从数据库中获取,工作正常。在第一个下拉列表的更改事件中,系统应转到数据库,并将结果提取到下一个下拉列表中。看看到目前为止我做了多少帮助: JQUERY SECTION

<script type="text/javascript" src="includes/scripts/newJquery.js"></script>
<script type="text/javascript">
$(document).ready(function() {
    $("#locate").change(function(){
       var selectedloc = $("#locate option:selected").val();
       $.ajax({type: "POST",url:"process-loc.php",data:{loca:selectedloc}}).done(function(data){
            var ans=jQuery.parse(data);
           //using php-mysql before
           var ps = ans.res;
           $("#subloc").html(ps);

       });
    });
    });
    </script>

前端(HTML)

 <tr>
    <th>Primary Location:</th>
    <?php 
   $result = mysqli_query($connection,"SELECT * FROM tab_location");?>
    <td>
    <select name="locate" class="form-control" id="locate">
    <option>Select Main Location</option>
    <?php while($rw = mysqli_fetch_array($result)){ ?>
    <option value="<?php echo $rw['location_name'];?>"><?php echo $rw['location_name'];?></option>
      <?php };?>
    </select>
    </td>
  </tr>
   <tr>
    <th>Sub Location:</th>
    <td id="subloc"></td>
  </tr>

过程-loc.php

if(isset($_POST["loca"])){
        include 'includes/session.php';
        include 'includes/db_connection.php';
        include 'includes/functions.php';


        $main = $_POST["loca"];


         $gets = "SELECT * FROM tab_fltlocation WHERE mainloc='".$main."'";
         $get = mysqli_query($connection,$gets);
         $gt = mysqli_fetch_array($get);


         //$nos= $gt['opsNo'];


          if(mysqli_num_rows($get)>=0)
          {
          echo json_encode(array("res"=>$gt));//or do a dropdown using <select name='subloc'><option value=$gt['loc']>$gt['loc']</option></select>
          }else{
          echo json_encode(array("res"=>"0"));
          }

       }
         ?>

这就是我想要在前端页面上显示的内容: $ GT [&#39; LOC&#39;] 我怎样才能做到这一点。

3 个答案:

答案 0 :(得分:2)

$query   = "
                SELECT 
                    tariff_name
                FROM tariff_setting";
        $result = mysqli_query($this->_connection, $query);

       while ($row = mysqli_fetch_assoc($result)) 
            $response[] = $row['tariff_name'];
       }

$tarrifList = json_encode($response);

// $ tarrifList是响应并以json编码格式发送并在ajax成功时解码

// Javascript Process

 var obj = JSON.parse(resdata);
    var areaOption = "<option value=''>Select State</option>";
     for (var i = 0; i < obj.length; i++) {
         areaOption += '<option value="' + obj[i] + '">' + obj[i] + '</option>'
     }
     $("#patientSelectState").html(areaOption);

答案 1 :(得分:1)

您可以更改AJAX处理器来执行此操作:

<强>过程-loc.php

/* Above code the same */
if(mysqli_num_rows($get)>=0) {
    $out = '<select id="selSubLoc"><option value="">Choose One:</option>';
    foreach($gt AS $loc){
        $seld = ($_POST['loca'] == $loc) ' selected' ? : '' ;
        $out .= '<option value="' .$loc. '" ' .$seld. '>' .$loc. '</option>';
    }
    $out .= '</select>';
}else{
    $out = 0;
}

echo $out;

并将您的前端代码的AJAX例程更改为:

$.ajax({
    type: "POST",
     url:"process-loc.php",
    data:{loca:selectedloc}
}).done(function(recd){
    $("#subloc").html(recd);
});

从PHP收到的数据将采用HTML格式,除非您使用dataType:进行更改,因此您可以在PHP端构建HTML,然后将其放入#subloc表中细胞

答案 2 :(得分:0)

在第一个框的事件中调用包含ajax的函数,该函数将从数据库中检索信息。此ajax调用将根据第一个输入获取数据。 现在查询您的数据库并在foreach循环中回显结果(您只能在那里创建一个标记)。 在ajax的成功中:&#39;捕获数据并显示它。

UILabel

http://www.9lessons.info/2010/08/dynamic-dependent-select-box-using.html