codeigniter

时间:2017-06-21 12:30:54

标签: javascript php codeigniter

我有一个名为' client_details的数据库'其中我想拉列' client_name'并在用户输入时在文本框中显示自动提示。 我浏览了所有网站,但仍未成功

对于Simplicity,我保持所有代码分开。我创建了一个单独的custom.js文件来执行自动完成工作,并通过' admin_footer.php'

加载它

这是我的观看' home_admin_view'



<?php include('admin_header.php');?>

<div class="container">
	<?php echo form_open('Home_controller/search',['class'=>'form-horizontal','role'=>'search']);?>
	<!--<form class="navbar-form navbar-left" role="search">-->
	    <div class="col-lg-2">
	    </div>
        <div class="form-group col-lg-6">
          <input type="text" name="client_name" id="client_name" class="form-control" placeholder="Search"/>
        </div>
         <div class="col-lg-1">
        <button type="submit" id="name_search" class="btn btn-default">Submit</button>
	    </div>
      <?= form_close(); ?>
      <?= form_error('query',"<p class='navbar-text text-danger'>", '</p>')?>
</div>

<?php include('admin_footer.php');?>
&#13;
&#13;
&#13;

控制器&#39; Client_controller&#39;

&#13;
&#13;
<?php
class Client_controller extends MY_Controller{

	public function index()
	{	
	  $this->load->helper('form');
      $this->load->view('home_admin_view');

	}

	public function search_client()
	{ 
      if (isset($_GET['term'])){
	       $q = strtolower($_GET['term']);
	       $this->client_model->search($q);
           }
      }
  }
?>
&#13;
&#13;
&#13;

型号&#39; client_model&#39;

&#13;
&#13;
<?php
class Client_model extends CI_Model{

	public function search($q)
	{
			$this->db->select('client_name');
		    $this->db->like('client_name', $q);
		    $query = $this->db->get('client_details');
		    if($query->num_rows() > 0)
		    {
		      foreach ($query->result_array() as $row)
		      {
		        $row_set[] = htmlentities(stripslashes($row['client_name'])); //build an array
		      }
		      echo json_encode($row_set); //format the array into json data
		    }
	}
}
?>
&#13;
&#13;
&#13;

最后我的custom.js文件,我在home_admin_view的页脚中声明了

&#13;
&#13;
/*******************Customer Search********************/  
    /*To Get Name*/
    $("#client_name").autocomplete({
        source: "Client_controller/search_client"    	 
    });
   


    /* To Get Client Complete details*/  	
    $('#name_search').click(function() {
        var name=$("#client_name").val();
	       
        $.ajax({
            type: "Post",
            url: "Client_controller/search_client",
            cache: false,
            dataType: 'json',			
            data: ({
                'client_name': client_name
            }),
            success: function(data){	 	
                try{		  
                   //Code to pull complete Client data
                }catch(e) {		
                    alert('Client does not exists!'); 
                }		
            } 
        });	 
    }); 
&#13;
&#13;
&#13;

发布我的&#39; Home_Controller&#39;以防万一(如果需要)

&#13;
&#13;
<?php
class Home_controller extends MY_Controller{

	public function index()
	{	
	  $this->load->helper('form');
      $this->load->view('home_admin_view');

	}

	public function search()
	{
      $this->load->library('form_validation');
      $this->form_validation->set_rules('query','Client Name','required');
      if(!$this->form_validation->run())
      	$this->index();
     // $query=$this->input->post('query');
      
      //print_r($query);
      
      }
  }
?>
&#13;
&#13;
&#13;

但有些如何在文本框中没有为自动提示提取任何数据,我是新手,但仍然有足够的知识。请帮忙,我被困住了,我需要尽早完成。

您的帮助将不胜感激..提前致谢

1 个答案:

答案 0 :(得分:0)

伙计们终于,我们找到了解决方案......它完美无缺。我的朋友帮助我解决了这个问题

问题出在我通过admin_header.php和admin_footer.php调用的.JS和.CSS文件

在用户admin_eader.php中包含以下代码行(假设我已经将这些文件下载到ur assets文件夹中,或者您可以提供CDN链接)

&#13;
&#13;
<head>
		<meta charset="UTF-8"/>
		<title>Fire Prevention</title> 
		
    <!-- Bootstrap core CSS -->
    <link href="<?php echo base_url('assets/css/bootstrap.min.css') ?>" rel="stylesheet"/>

    <!-- IE10 viewport hack for Surface/desktop Windows 8 bug -->
    <link href="<?php echo base_url('assets/css/ie10-viewport-bug-workaround.css') ?>" rel="stylesheet"/>

    <!-- Custom styles for this template --> 
    <link href="<?php echo base_url('assets/css/jquery-ui.css') ?>" rel="stylesheet"/>  

    <!-- Just for debugging purposes. Don't actually copy these 2 lines! -->
    <!--[if lt IE 9]><script src="../../assets/js/ie8-responsive-file-warning.js"></script><![endif]-->
    <script src="<?php echo base_url('assets/js/ie-emulation-modes-warning.js') ?>" ></script> 

    <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
    <!--[if lt IE 9]>
      <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
      <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
    <![endif]-->
	</head>
&#13;
&#13;
&#13;

和admin_footer.php中的此代码

&#13;
&#13;
<script src="<?php echo base_url('assets/js/jquery.min.js') ?>"></script>
    <!--  <script>window.jQuery || document.write('<script src="../../assets/js/jquery.min.js"><\/script>')</script>-->
    <script src="<?php echo base_url('assets/js/bootstrap.min.js') ?>"></script> 
    <!-- IE10 viewport hack for Surface/desktop Windows 8 bug -->
    <script src="<?php echo base_url('assets/js/ie10-viewport-bug-workaround.js') ?> "></script>
    <!-- JQuery UI Javascript--> 
    <script src="<?php echo base_url('assets/js/jquery-ui.js') ?> "></script> 
    <!-- JQuery Datepicker Javascript--> 
    <script src="<?php echo base_url('assets/js/bootstrap-datepicker.min.js') ?> "></script> 
    <!-- Custom Javascript--> 
    <script src="<?php echo base_url('assets/js/custom.js') ?> "></script> 
	</body>
&#13;
&#13;
&#13;

尝试在页脚中加载.js文件可能是一个很好的做法...它加载页面更快...谢谢和享受!!