Intereting Posts
Ошибка анализа: синтаксическая ошибка, неожиданный T_ELSE, и я не знаю, почему Перенос сеанса через сервер в PHP php – imap – перемещение электронных писем на учетную запись antoher Включить html-страницы в файл php Доступ к дочернему объекту из родительской области Magento – Как вы возвращаете результаты неограниченного статического блока CMS (с определенным «Идентификатором») на страницу CMS Как получить доступ к n-му объекту в объекте коллекции Laravel? Как хэш длинные пароли (> 72 символа) с blowfish Проблемы с PHP при попытке создать большой массив Проверка доступной комнаты с использованием MySql Аутентификация самозаверяющего сертификата для подключения LDAPS «Недостаточно разрешений» учетная запись службы API Google Analytics HTML5: загрузка файла AJAX с индикатором выполнения codeigniter – скрытый ввод с функцией перенаправления Проблема с настройкой регистрации пользователя joomla 1.7

автозаполнение в codeigniter

Я попытался сделать autocomplete в codeignter, используя код, который я получил с сайта. Но он не работает для меня. Кто-нибудь может найти проблему

Функция просмотра, которую я использовал, приведен ниже

<html> <head> <title>Autocomplete</title> <script src="<?php echo base_url().'js/jquery.autocomplete.js'?>"></script> <script src="<?php echo base_url().'js/jquery-1.6.4.js'?>"></script> <script type="text/javascript"> $(function() { $( "#username" ).autocomplete({ //the recipient text field with id #username source: function( request, response ) { $.ajax({ url: "http://localhost/autocomplete/index.php/autocontroller/search_username", dataType: "json", data: request, success: function(data){ if(data.response == 'true') { response(data.message); } } }); } }); }); </script> </head> <body> <h1>Autocomplete</h1> <input type="text" id="username" value="" /> </body> </html> 

И контроллер, который я использовал, приведен ниже

 <?php /* * To change this template, choose Tools | Templates * and open the template in the editor. */ /** * Description of autocontroller * * @author Sivam */ class autocontroller extends CI_Controller { public function __construct() { parent::__construct(); $this->load->helper(array('form', 'url')); $this->load->database(); } function index() { $this->load->view('autoview'); } function search_username() { $username = trim($this->input->get('term', TRUE)); //get term parameter sent via text field. Not sure how secure get() is $this->db->select('fname'); $this->db->from('users'); $this->db->like('fname', $username); $this->db->limit('5'); $query = $this->db->get(); if ($query->num_rows() > 0) { $data['response'] = 'true'; //If username exists set true $data['message'] = array(); foreach ($query->result() as $row) { $data['message'][] = array( 'label' => $row->fname, 'value' => $row->fname ); } } else { $data['response'] = 'false'; //Set false if user not valid } echo json_encode($data); } } ?> 

Я не могу понять, почему вы используете

 $data['message'][] = array( 'label' => $row->fname, 'value' => $row->fname ); 

Вы можете попробовать с помощью одномерного массива.

 $data['message'] = array( 'label' => $row->fname, 'value' => $row->fname ); 

Я также использую автозаполнение, ссылаясь на это. http://www.jamipietila.fi/codeigniter-and-autocomplete-with-jquery/ Пожалуйста, попробуйте это … Его работы для меня .. Надеюсь, это сработает и для вас.

Это простой способ использования автозаполнения в codeigniter. Это сработало для меня.

Ввиду:

 <script src="http://code.jquery.com/jquery-1.10.2.min.js"></script> <script type="text/javascript"> function lookup(inputString) { if(inputString.length == 0) { $('#suggestions').hide(); } else { $.post("<?php echo base_url() ?>your_controller/your_action/"+inputString, function(data){ if(data.length > 0) { $('#suggestions').show(); $('#autoSuggestionsList').html(data); } }); } 

}

 function fill(thisValue) { $('#id_input').val(thisValue); setTimeout("$('#suggestions').hide();", 200); } </script> <?php echo form_input('company_name', '', "id='id_input' autocomplete='off' onKeyUp='lookup(this.value)'") ?> <div id="suggestions"> <div class="autoSuggestionsList_l" id="autoSuggestionsList"></div> </div> 

Здесь первая строка – это, конечно, вызов библиотеки jquery.

Далее мы имеем 2 функции. lookup () принимает вход пользователя, а затем вызывает соответствующий URL-адрес, который будет выполнять необходимый вызов базы данных.

Следующая функция fill () выгружает div, который будет содержать результирующий вывод.

Наконец, в представлении я добавил поле ввода текста, а также подключил функцию поиска, как только пользователь вводит ввод в поле. Ниже поля ввода у нас есть div, который покажет результат, если он есть. Этот div будет виден только тогда, когда вход пользователя даст результат.

В контроллере мы имеем:

 function autocomplete($a) { $i = 0; $this->load->model('company'); $companyList = $this->company->get_companies($a); if(count($companyList) > 0): echo "<ul>"; foreach($companyList as $comp): echo "<li id='".$companyList[$i]['id']."'><a href='#'>".$companyList[$i]['name']."</a></li>"; $i++; endforeach; echo "</ul>"; endif; } 

Здесь, в приведенной выше функции, он принимает название компании (или ее часть), а затем я вызываю функцию get_companies () со строкой. Эта функция вызовет вызов базы данных и вернет результат в виде массива.

В модели:

 public function get_companies($name) { //$this->db->_compile_select(); $this->db->like('company_name', $name, 'after'); //$this->db->where('id', $name); $query = $this->db->get('companies'); //echo $this->db->last_query(); //echo $query->num_rows(); $companies = array(); $i = 0; if($query->num_rows() > 0) { foreach ($query->result() as $row) { $companies[$i]['id'] = $row->id; $companies[$i]['name'] = $row->company_name; $i++; } } //print_r($companies); return $companies; } 

Эта выше функция выполняет вызов базы данных и возвращает 2D-массив, одним из которых является идентификатор, а другое – имя.