Как вернуть идентификатор «продукта» после того, как jQuery .autocomplete получит его по имени? (Codeigniter, JQuery)

У меня есть форма, которая регистрирует «свойство» для выбранного «продукта».

При наборе названия продукта — он получает его из базы данных, используя контроллер, отправляет его в модель и возвращает массив переменных.

Поскольку jQuery ‘autocomplete’ работает с jsons, то он отображает переменные как jsons.

Я пытаюсь получить идентификатор, используя скрытую форму, но безуспешно, как лучше всего это сделать?

Модель:

public function search_prod_name($prod_name){

$this->db->query(" SELECT prod_name, prod_id FROM prods WHERE prod_name LIKE $prod_name");
return $this->db->get('prods')->result();

}

контроллер:

// Autocomplete prod name from DB.
public function search_prod_name(){

if ( isset($_GET['prod_name']) ){

$prod_name = $_GET['prod_name'];

$result = $this->kas_model->search_prod_name();

if (count($result) > 0){

foreach ($result as $prod) {

$arr_name[] = $prod->name;
$arr_id[]   = $prod->id;

}

echo json_encode($arr_name);
echo json_encode($arr_id);
}
}
}

заголовок (jQuery):

<script type="text/javascript">
$(document).ready(function(){
$('#prod_name').autocomplete({
source: "<?php echo site_url('kas/search_prod_name'); ?>"});
});
</script>

Форма:

<?php

// Give a class and ID to the 'prop_prod' autofill
$attributes = array('class' => 'prod_name', 'id' => 'prod_name', 'name' => 'prod_name');
$attributes2 = array('name' => 'prop_prod' );
?>

<div class="content kas_reg prop_reg">

<h1>Register a new property:</h1>

<?php

echo form_open('kas/add_property');

echo form_input('prop_word', 'property');
echo form_input('prod_name',  'prod Name', $attributes);
echo form_hidden($attributes2);
?><select id="country" name="prop_country">
<!-- options.. -->
</select><?php

echo form_submit('submit', 'Submit a New property');

echo form_close();

?></div>

В настоящее время я получаю имена из базы данных, но я хочу получить идентификатор этого имени. поэтому при отправке — я отправляю ID, а не имя.

РЕДАКТИРОВАТЬ:

У меня есть эти файлы, и я точно знаю, что их зовет начальник.
может это проблема с кешем может быть?

введите описание изображения здесь

1

Решение

Вы должны установить значение и индекс метки в массиве, найти определение на странице автозаполнения API.

контроллер:

// Autocomplete prod name from DB.
public function search_prod_name(){

$data = array();
$prod_name = $this->input->get('term');

if ( !empty($prod_name) ){

$result = $this->kas_model->search_prod_name($prod_name);

if (count($result) > 0){

foreach ($result as $prod) {
$aRow = array();
$aRow['label'] = $prod->name;
$aRow['value'] = $prod->name;
$aRow['id'] = $prod->id;
$data[] = $aRow;
}
}
}

echo json_encode($data);

}

Код модели

public function search_prod_name($prod_name){

$result = $this->db->query("SELECT prod_name, prod_id FROM prods WHERE prod_name LIKE '%$prod_name%'");
return $result->result();

}

JavaScript:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
<link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/themes/smoothness/jquery-ui.css">
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$('#place_name').autocomplete({
//minLength:2,
source:function(request, response) {
var sUrl = "<?php echo site_url('kas/search_prod_name'); ?>";
$.getJSON(sUrl, request, function(result) {
response(result);
});
},
select:function(event, ui) {
alert('Your selected id is '+ui.item.id);
}
});
});
</script>
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]