2017-09-27 159 views
0

我有这样的形式。如何在OOP中发送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()来处理,并获得名字suplier数据库,并把价值上的ID = namasup。我如何处理它?

这里代码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; 
     } 
    } 
+1

你永远不会发送'id_suplier'!?你需要将它添加到'data:{id:id_suplier},' – Jeff

+0

@Jeff ok谢谢..但是我怎样才能发送请求到getSuplier()?当所选选项有变化时,我很困惑。 – Rachmad

回答

0

也许你可以做到这一点

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

$barang = new Barang; 

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

除此之外,Jeff是正确的。您不会将您的id_suplier发送到服务器。请发送。

0

我觉得你没有必要每次在选择

更改数据在我看来时间要求的名字从数据库,你可以在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> 

使用此代码

in 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); 

希望这个帮助

+0

谢谢@Akkapong Kajornwongwattana,我会试试看。 – Rachmad