Как преобразовать базовый PHP скрипт в codeigniter

Я делаю код автозаполнения фрагмента, используя модальный код 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.

пожалуйста, помогите мне

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
217
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

В вашем контроллере разрешите доступ для управления

public function __construct($config = 'rest')
{
    header('Access-Control-Allow-Origin: *');
    header("Access-Control-Allow-Methods: GET, POST, OPTIONS, PUT, DELETE");
    parent::__construct();
}

все еще не могу принять

asnka go 25.11.2018 09:36

успех: функция (данные) {var obj = jQuery.parseJSON (данные); document.getElementById ('elementName'). значение = obj.variableName; }

Mohsin Mujawar 25.11.2018 09:42

любое другое предложение? не могли бы вы преобразовать мой ajax.php в контроллер и модель?

asnka go 26.11.2018 01:31
Ответ принят как подходящий

я нашел решение добавить exit (); после foreach

  endforeach;
  exit();

Другие вопросы по теме