Я делаю код автозаполнения фрагмента, используя модальный код ajax в php. Это уже успех. Я могу выполнить поиск, введя productName или productCode в моем модальном окне. Но моя проблема в том, что теперь я хочу преобразовать этот код в структуру codeigniter. Я уже пытаюсь создать контроллер, модель и представление, но данные не отображаются, когда я выполняю поиск в моем модальном окне. Мои результаты должны быть такими же, как при использовании базового php.
мои данные образца productCode: s1 productName: test Цена: 22.50
мой результат успеха: введите описание изображения здесь
мой файл: ajax.php
<?php
require_once 'config.php';
if (!empty($_POST['type'])) {
$type = $_POST['type'];
$name = $_POST['name_startsWith'];
$query = "SELECT productCode, productName, buyPrice FROM products where quantityInStock !=0 and UPPER($type) LIKE '".strtoupper($name)."%'";
$result = mysqli_query($con, $query);
$data = array();
while ($row = mysqli_fetch_assoc($result)) {
$name = $row['productCode'].'|'.$row['productName'].'|'.$row['buyPrice'];
array_push($data, $name);
}
echo json_encode($data);
// exit;
}
?>
просмотреть файл: index.php
//autocomplete script
$(document).on('focus','.autocomplete_txt',function(){
type = $(this).data('type');
if (type =='productCode' )autoTypeNo=0;
if (type =='productName' )autoTypeNo=1;
$(this).autocomplete({
source: function( request, response ) {
$.ajax({
url : 'ajax.php',
dataType: "json",
method: 'post',
data: {
name_startsWith: request.term,
type: type
},
success: function( data ) {
response( $.map( data, function( item ) {
var code = item.split("|");
return {
label: code[autoTypeNo],
value: code[autoTypeNo],
data : item
}
}));
}
});
},
autoFocus: true,
minLength: 0,
appendTo: "#modal-fullscreen",
select: function( event, ui ) {
var names = ui.item.data.split("|");
id_arr = $(this).attr('id');
id = id_arr.split("_");
console.info(names, id);
$('#itemNo_'+id[1]).val(names[0]);
$('#itemName_'+id[1]).val(names[1]);
$('#quantity_'+id[1]).val(1);
$('#price_'+id[1]).val(names[2]);
$('#total_'+id[1]).val( 1*names[2] );
calculateTotal();
}
});
});
С базового уровня я пытаюсь преобразовать его в codeigniter. мой код ниже
Контроллер: Invoice.php
function search()
{
$type = $this->input->post('type');
$name = $this->input->post('name_startsWith');
$data = array();
$result = $this->invoice_model->getInvoice($type,$name);
foreach ($result as $row):
$name = $row->productCode.'|'.$row->productName.'|'.$row->buyPrice;
array_push($data, $name);
endforeach;
$data['res_invoice'] = json_encode($data);
$data['view_content'] = "invoice/search";
$this->load->view('layout/template',$data);
}
Модель: Invoice_model.php
public function getInvoice($type,$name)
{
$this->db->select('productCode, productName, buyPrice');
$this->db->like('productCode', $name, 'after');
$query = $this->db->get('products');
return $query->result();
}
и, на мой взгляд, теперь я перехожу на код ajax url: 'ajax.php', на url: base_url ('стоматолог / поиск')
тогда, когда я запускаю этот код codeigniter, результат не появляется, похоже, он не может найти мой поиск по запросу.
но если я эхо-данные json, он покажет мои данные ["s1 | test | 22.5", "s2 | testing | 43.5"] из db.
пожалуйста, помогите мне






В вашем контроллере разрешите доступ для управления
public function __construct($config = 'rest')
{
header('Access-Control-Allow-Origin: *');
header("Access-Control-Allow-Methods: GET, POST, OPTIONS, PUT, DELETE");
parent::__construct();
}
успех: функция (данные) {var obj = jQuery.parseJSON (данные); document.getElementById ('elementName'). значение = obj.variableName; }
любое другое предложение? не могли бы вы преобразовать мой ajax.php в контроллер и модель?
я нашел решение добавить exit (); после foreach
endforeach;
exit();
все еще не могу принять