如何在OOP中发送AJAX请求?

时间:2017-09-27 02:15:35

标签: javascript php jquery ajax

我有这样的形式。

<form action="Barang.php" method="POST" class="form-horizontal" role="form">
    <div class="form-group">
      <label class="control-label col-md-3" 
        for="id_suplier">ID suplier :</label>
         <div class="col-md-5">
            <select class="selectpicker" title="Ketikkan ID suplier" data-width="100%" data-live-search ="true" id="id_suplier" autocomplete="off" onchange="" required>
                <?php
                    $query = $db->query('SELECT * FROM tb_suplier');
                ?>
                <?php
                    while($row = $query->fetch(PDO::FETCH_ASSOC)){ ?>

                     <option value="<?php echo $row['id_suplier']; ?>"><?php echo $row['id_suplier']; ?></option>  

                <?php 
                  }
                ?>
            </select>
        </div>
        <span class="badge badge-info" style="margin-top:10px;" id="namasup">nama suplier</span>
    </div>
    </form>

    <script type="text/javascript">
        $('#id_suplier').on('change', function() {

            var id_suplier=$("#id_suplier").val();

            $.ajax({
              type:"POST",
              url:"Barang.php",
              dataType:'json',  
              success:function(data) {
                $("#namasup").html(data.namasup);
              }
        });

    })

    </script>

我想将请求发送到Barang.php,我想在getSuplier()中处理,并获得数据库的名称,并将值放在id = namasup上。我该如何处理它?<​​/ p>

这里代码为Barang.php

<?php
    class Barang
    {


        function getSuplier($id){
            $query = $this->db->query("SELECT nama from tb_suplier where id='$id' ");
            $result=$query->fetch(PDO::FETCH_ASSOC);
            return $result;
        }
    }

2 个答案:

答案 0 :(得分:0)

也许你可以这样做

 class Barang
 {
     function getSuplier($id){
         // your code here ....
     }      
 }

 $barang = new Barang;

 $barang->getSupplier($_GET['id']);

除此之外,Jeff是对的。您没有将id_suplier发送到服务器。请发送。

答案 1 :(得分:0)

我认为每次更改选择中的数据时都不需要从数据库中请求名称

在我看来,您可以使用此代码

in html

<html>
<body>
<form action="Barang.php" method="POST" class="form-horizontal" role="form">
  <div class="form-group">
    <label class="control-label col-md-3" 
      for="id_suplier">ID suplier :</label>
       <div class="col-md-5">
          <select class="selectpicker" title="Ketikkan ID suplier" data-width="100%" data-live-search ="true" id="id_suplier" autocomplete="off" onchange="" required>

          </select>
      </div>
      <span class="badge badge-info" style="margin-top:10px;" id="namasup">nama suplier</span>
  </div>
</form>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script>
  function createOption(datas)
  {
    var html = "";
    for (var i in datas){
      var data = datas[i];
      html = html + '<option value="'+data['id']+'">'+ data['name'] +'</option>';
    }
    return html;
  }
  $(document).ready(function() {
      //get all data
      $.ajax({
          type:"POST",
          url:"Barang.php",
          type: "json",
          //dataType:'json',  
          success:function(res) {
            var datas = JSON.parse(res);
            $("#id_suplier").html(createOption(datas));
            //tigger change event
            $('#id_suplier').change();
          }
      });

      $('#id_suplier').on('change', function(){ 
          //change name in span
          var name = $('#id_suplier').find(":selected").text();
          $("#namasup").html(name);
      });
  });


</script>
</body>

在php中

class Barang
{
    //Method for get all datas
    public function getSupliers(){
        //I don't have you database so I skip this part

        // $query = $this->db->query("SELECT nama from tb_suplier");
        // $result=$query->fetch(PDO::FETCH_ASSOC);
        // return $result;

        //mock data
        $datas = [[
            'id'   => 1,
            'name' => 'Test 1',
        ],[
            'id'   => 2,
            'name' => 'Test 2',
        ],[
            'id'   => 3,
            'name' => 'Test 3',
        ]];

        return $datas;
    }
}

$class = new Barang();
$datas = $class->getSupliers();
echo json_encode($datas);

希望这个帮助