如何使用select将数据从模板传递到控制器

时间:2018-05-14 10:52:04

标签: php html forms templates

如何发送不能将信息从选择发送到控制器。

我想使用select to过滤器对类别过滤器进行搜索。选择的数据来自BD。 select的数据是id和name。

当您查找某些内容并希望按类别过滤到选择时,它应该有用,一旦选择了类别中的类别会自动将您重定向到同一视图但是使用另一个查询加载另一个模型

代码视图:

<?php echo form_open('Welcome/myfunction'); ?>
    <select name="category">
      <option value="">filter</option>
      <?php
      foreach ($cat -> result() as $row){ 
        echo "<option value'".$row->id."'>".$row->name."</option>";
      }
      ?>
    </select>
<?php form_close(); ?>

代码控制器:

public function myFunction(){
     $b = $this->input->post('category');
     echo $b;
}

这是一个了解视图和控制器是否正常工作的简单功能。使用此代码,我在选择中选择类别,但它不会做任何事情。

3 个答案:

答案 0 :(得分:2)

除了@PawelSzalucki所指出的,你的option值没有正确设置

看看这里

<?php
   foreach ($cat -> result() as $row){ 
   echo "<option value'".$row->id."'>".$row->name."</option>"; //here
 }
?>

应该是

echo "<option value='".$row->id."'>".$row->name."</option>"; // value=

答案 1 :(得分:1)

尝试:

<select  name="category" onchange='if(this.value != '') { this.form.submit(); }'>

答案 2 :(得分:0)

您可以在onchange<select>调用上使用ajax方法将值传递给&#34; myFunction&#34;

<?php echo form_open('Welcome/myfunction'); ?>
<select name="category" id="yourid">
  <option value="0">filter</option>
  <?php
  foreach ($cat -> result() as $row){ 
    echo "<option value='".$row->id."'>".$row->name."</option>";
  }
  ?>
</select>
  

代码视图 - &gt;添加ajax:

<script>
$('#yourid').change(function() {
    var categid      = $(this).val();
    var categval    = $(this). text();
    $.ajax({
            url: 'http://domain/myFunction', //where you need to call ajax
            type: 'POST',
            dataType: 'JSON',
            data: {'category': categval, ‘catid’: categid}, //value of x with param 
            success: function (data) {
                console.log(data);
                 //check and print console value   
            },
            error: function (e) {
                //called when there is an error
                console.log(e.message);
            }
        });

}
</script>

代码控制器:

public function myFunction(){
    $b = $this->input->post('category');
    echo $b;
    //check post print_r(chck posted value here);

  }
祝你好运:)