Надежный выпадающий список с использованием ajax в codeigniter не работает - PullRequest
0 голосов
/ 06 февраля 2019

Я пытаюсь создать надежный выпадающий список, используя ajax в codeigniter.Я использовал код .. но он не работает .. значения не добавляются в выпадающий список.Получение данных из базы данных в первый выпадающий список работает отлично.Первый выпадающий список работает нормально ... но я хочу сделать надежный выпадающий список подкатегории на основе категории с помощью ajax

CONTROLLER ::

public function pdview()
{
   $this->load->helper('url');
   $this->load->helper('form'); 
   $this->load->model('AjaxpModel');
   $data['cnames'] = $this->AjaxpModel->getcat();
   $this->load->view('pd',$data);
}

public function getsubcaty()
{
   $postData = $this->input->post();
   $this->load->model('AjaxpModel');
   $data = $this->AjaxpModel->getsubcategory($postData);
   echo json_encode($data);
}

View ::

Category Name :   <select name="category" id="category">
                  <option value="">Select</option>
                  <?php
                     foreach($cnames as $catn){
                            echo "<option value='".$catn['catname']."'>".$catn['catname']."</option>";
                     }
                  ?>
                  </select><br><br>
Subategory Name :
                  <select name="subcategory" id="subcategory">
                     <option value="">Select</option>
                  </select><br><br>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script type='text/javascript'>

var baseURL= "<?php echo base_url();?>";

$(document).ready(function(){
   // Category Change
   $('#category').change(function(){
      var cat = $(this).val();
      // AJAX request
      $.ajax({
         url:'<?=base_url()?>index.php/Ajaxuser/getsubcaty',
         method: 'post',
         data: {cat:cat},
         dataType: 'json',
         success: function(response){
            $('#subcategory').find('option').not(':first').remove();
               // Add options
               $.each(response,function(index,data){

                  $('#subcategory').append('<option value="'+data['subcatname']+'">'+data['subcatname']+'</option>');

               });
            }
      });
   });
});

Модель :::

public function getcat()
{
   $this->load->database();
   $result=$this->db->select('cid,catname')->from('catc')->get()->result_array(); 
   $cname=array();
   foreach($result as $r)
   {
      $catname[$r['catname']] = $r['catname'];
   }
   $catname[''] = 'Select '; 
   return $catname; 
}

function getsubcategory($postData){
   $response = array();

   // Select record
   $this->db->select('scid,subcatname');
   $this->db->from('scatc');
   $this->db->where('catname', $postData['cat']);
   $q = $this->db->get();
   $response = $q->result_array();
   return $response;
}

1 Ответ

0 голосов
/ 06 февраля 2019

Прежде всего проверьте, правильно ли определен ваш base_url().

Когда вы следовали моим инструкциям в разделе комментариев, я думаю, что вижу проблему на вашем JS,

Вы можете попробоватьвот это:

  $(document).ready(function(){

            // Category Change
            $('#category').change(function(){
                var cat = $(this).val();
                // AJAX request
                $.ajax({
                    url:'<?=base_url()?>index.php/Ajaxuser/getsubcaty',
                    method: 'post',
                    data: {cat:cat},
                    dataType: 'json',
                    success: function(response){

                var $el = $("#subcategory");

                 $el.empty();
                 $("#subcategory").val('');
                 $el.append($("<option></option>")
                        .attr("value", '')
                        .attr("hidden",'')
                        .text('Select Subcategory'));

                $.each(response, function(index, data){
                    $el.append('<option 
                    value="'+data.subcatname+'">'+data.subcatname+'</option>')
                });

                    }
                });
            });
        });

Давайте посмотрим, что вы получили после попытки этого.

На вашей модели getsubcategory вы забыли загрузить базу данных.Это должно быть так:

   $this->load->database();

В той же функции модели $postData[cat] должно быть только $postData, потому что вы не передаете данные массива из вашего контроллера, иначе вы будетес ошибкой недопустимого смещения строки.

РЕДАКТИРОВАТЬ: Поскольку мы выяснили, что проблема base_url()

Сконфигурируйте, если помощник 'url'загружен, вы можете установить его на application/config/autoload.php.

Configure url helper on autoload

, и вы должны определить его, чтобы знать, что именно значение base_url().

Вы можете установить его на application/config/config.php.

Чтобы проверить, работает ли base_url(), попробуйте повторить base_url ().

Configurations

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...