简体   繁体   English

如何在没有刷新页面的情况下根据选择框值从codeigniter中获取数据库中的值?

[英]how to get values from database in codeigniter based on select box value without refreshing page?

Unable to get value from database in codeigniter. 无法从codeigniter中的数据库中获取值。 I tried to fetch data based on select box value(menu_code) without refreshing page using ajax but I got result undefined. 我尝试基于选择框值(menu_code)获取数据而不使用ajax刷新页面,但我得到的结果未定义。

This my controller's code : login.php 这是我的控制器代码: login.php

public function get_menu_rights()
{
    if (isset($_POST['name']))
    {       
        $root_id = $this->input->post('menu_root_id');

        $data['res'] = $this->login_model->get_menu_check($root_id);
        // print_r($data['res']);
        echo json_encode($data);
        //$this->load->view('pages/role_rights',$data);     
    }
}

Below is my model code login_model.php 下面是我的模型代码login_model.php

public function get_menu_check($root_id)
{       
    $this->db->select('menu_code,menu_name');       
    $this->db->from('create_menu as C1');   
    $this->db->where('C1.menu_root_id',$root_id);       
    $this->db->order_by('menu_code');

    return $this->db->get()->result_array();
}

This is my view code role_rights.php 这是我的视图代码role_rights.php

<form action="<?php echo base_url('login/get_menu_rights');?>" method="post">
    <?php
     print"<select class=\"form-control\" name=\"menu_root_id\" onchange=\"javascript:__doPostBack();\" id=\"menu_root_id\">"; ?>                                       <option value="select">select</option>
                        <?php foreach($result as $res) { ?>                             
                    <option value="<?php echo $res->menu_code; ?>">
                    <?php echo $res->menu_name.'-'.$res->menu_code; ?>
                    </option>
                <?php } ?>
            </select>
            </form>
        </div>
    <script src='https://code.jquery.com/jquery-2.1.3.min.js'></script>

<script type="text/javascript">
        function __doPostBack()
        {
            var name = document.getElementById('menu_root_id').value; 
            var dataString='name='+ name;
            $.ajax({
                type:"post",
                url:"<?php echo base_url('login/get_menu_rights'); ?>",
                data:dataString,
                cache:false,
                dataType: 'json',                  
              success: function(data)        
              {
                var id = data[0];             
                var vname = data[1]; 
                $('#output').html("<b>menu_code: </b>"+id+"<b> menu_name: </b>"+vname); 
              }
            });
            return false;
        }
        </script>
</div>

<div id="output"></div>

Hope this will help you : 希望这个能对您有所帮助 :

Replace 更换

$root_id = $this->input->post('menu_root_id');

with

$root_id = $this->input->post('name');

Your controller's get_menu_rights method should be like this : 你的控制器的get_menu_rights方法应该是这样的:

public function get_menu_rights()
{
  $root_id = $this->input->post('name');
  if(! empty($root_id))
  {
    $data = $this->login_model->get_menu_check($root_id);
    // print_r($data);
    echo json_encode($data);
    exit;   
   }
}

Your ajax success function should be like this : 你的ajax success函数应该是这样的:

success: function(data)        
{
  var html = '';
  $.each(data,function(k,v){
    alert(v);
    html += "<b>menu_code: </b>"+v.menu_code+"<b> menu_name: </b>"+v.menu_name
  });
  $('#output').html(html); 
}

There are a few things I noticed 我注意到了一些事情

  1. $data is an undefined array & you are settings the result array returned by the model function to it's 'res' key $data是一个未定义的数组,你将模型函数返回的结果数组设置为'res'
  2. dataString is not a json neither it's a js array that you are sending dataString不是json,也不是你要发送的js数组
  3. since you used json_encode , you need to use JSON.parse(data) in the ajax success 因为您使用了json_encode ,所以需要在ajax成功中使用JSON.parse(data)
  4. if you do have the result in $data['res'] , then you need to do something like this - data=JSON.parse(data)['res']; 如果你确实在$data['res']得到了结果,那么你需要做这样的事情 - data=JSON.parse(data)['res']; now you can get id from data[0] 现在你可以从data[0]获取id

I think the query return empty please try this Code..... 我认为查询返回空请试试这个代码.....

 public function get_menu_check($root_id)
        {
                $data = $this->db->select('C1.menu_code,C1.menu_name')
                                 ->from('create_menu as C1')
                                 ->where('C1.menu_root_id',$root_id)
                                 ->order_by('C1.menu_code')
                                 ->get();
               if($data->num_rows() >= 0)
                  return $data->result_array();
               else
                  return false;
        }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 从数据库发送和检索数据并显示在选择框中,而无需刷新CodeIgniter中的页面 - Send and retrive data from database and display in select box without refreshing page in CodeIgniter CodeIgniter从选择框中的数据库中获取值? - CodeIgniter get values from database in select box? 在不刷新页面的情况下如何在Codeigniter中使用Ajax / jquery替换和显示数据库中的更新值 - without refreshing the page how to replace and display the updated values from database using ajax/jquery in codeigniter 获取选择选项的值而无需刷新页面 - Get the value of select option without refreshing the page 如何在codeigniter的选择框中显示从数据库中选择的值 - how to show the selected value from database in select box in codeigniter 如何在不刷新页面的情况下从另一个菜单获取值? - How to get values from another menu without refreshing the page? 从Codeigniter中的多个选择框获取值 - Get Values from Multiple select Box In Codeigniter 如何在下拉框中获取列中其他值而不刷新PHP Ajax MySQL中的页面 - How to get the column other value in dropdown box without refreshing the page in php ajax mysql 如何在不使用 GET 数据中的数据刷新页面而不单击按钮的情况下显示 mysql 数据库 - How to display a mysql database without refreshing the page with data from GET data without clicking button 如何从同一页面上的选择框中获取值 - How can I get a value from a select box on the same page
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM