2015-08-17 3 views
0

Мне нужна ваша помощь .. В моем файле просмотра я использую ajax для запроса данных на контроллер. Вот код Аякса:Метод Codeigniter в контроллере не вызывает метод в модели

<script type="text/javascript"> 
    $(document).ready(function(){ 
     $('#selCat').change(function(){ 
     var id = $(this).val(); // selected name from dropdown #table 
     $.ajax({ 
     url: '<?php echo base_url();?>'+'index.php/client/ajax_subcat', // or "resources/ajax_call" - url to fetch the next dropdown 
     async: false, 
     type: "POST",  // post 
     data: {id:id}, 
     dataType: "html", // return type 
     success: function(data) { // callback function 
     $('#selSubCat').html(data); 
     } 
     }) 
     }); 
    }); 
    </script> 

Тем временем функция ajax_subcat() в контроллере клиента, как это:

public function ajax_subcat(){ 
    // $this->load->view('content/ajax_subcat'); 

     if($_POST){ 

      $catcode = $this->input->post('id',TRUE); 
      $result = $this->preference_model->getSubCategory3($catcode); 
      //$result = $this->preference_model->getSubCategory2(); 
      echo "<script type='text/javascript'>alert('$catcode');</script>"; 
      //echo "<script type='text/javascript'>alert('$result->cat2name_EN');</script>"; 

      foreach ($result as $row) { 
      echo $row->cat3name_EN; 
      # code... 
      } 
     } 

     //$this->load->view('content/'); 
    } 
} 

Как вы можете видеть в контроллере, я пытался вызвать функцию getSubCategory3 ($ catcode); в моей модели, но эта строка не была выполнена. Я попытался использовать оповещение, чтобы узнать, что произошло.

потому что первые три эха были выполнены, я получил предупреждение. Но, кажется, код остановился, когда встретился

$result = $this->preference_model->getSubCategory3($catcode); 

, а затем ничего не вернулся к виду.

функция в моем preference_model, как это:

function getSubCategory3($cat2code){ 
     $return = array(); 
     $queryString = "SELECT id, cat3code, cat3name_EN FROM `subcategory` WHERE cat2code = '".$cat2code."' ORDER by cat3name_EN"; 
     echo $queryString; 

     $query = $this->db->query($queryString); 

     if($query->num_rows()>0){ 
      foreach($query->result() as $row){ 
       array_push($return, $row); 
      } 
     } 
     return $return; 
    } 

ничего не было выполнено в preference_model.

Кто-нибудь знает, что не так с моим кодом?

Примечание:

Я загрузил модель в функции __construct() моего контроллер клиента

function __construct(){ 
     parent::__construct(); 
     $this->load->database(); 
     $this->load->helper('url'); 
     $this->load->model('preference_model'); 
    } 

Когда я изменил эхо-уведомление в контроллере эхо строки, ничего не печатаются на моем экран.

+0

это preference_model или reference_model –

+0

$ this-> load-> model ('Model_name'); вы установили модель? –

+0

Это preference_model, и я загрузил его в свой контроллер. Я отредактировал мой вопрос более подробно –

ответ

0

В Codeigniter перед использованием их необходимо загрузить Models, Helpers и Libraries.

Добавьте строку ниже в код перед вызовом метода модели

$this->load->model('preference_model'); 

Вы также можете сделать альтернативное имя для использования в коде

$this->load->model('preference_model', 'prefrence'); 
$result = $this->preference->getSubCategory3($catcode); 
+0

Я фактически загрузил функцию __construct(), но все еще сталкивался с проблемой, которую я написал здесь. –

+0

Напишите свой метод __construct и код preference_model – Dau

+0

Я добавил его в свой вопрос. –

0

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

Вот мой окончательный ajax_subcat (код)

public function ajax_subcat(){ 

     if($_POST){ 
      $catcode = $this->input->POST('id',TRUE); 
      //echo "<script type='text/javascript'>alert('$catcode');</script>"; 
      $result = $this->preference->getSubCategory3($catcode); 
      //$result = $this->preference_model->getSubCategory2(); 
      //echo "<script type='text/javascript'>alert('$catcode');</script>"; 
      //echo "<script type='text/javascript'>alert('$result->cat2name_EN');</script>"; 
      $output = null; 
      foreach ($result as $row) { 

      $output .= "<option value='".$row->cat3code."'>".$row->cat3name_EN."</option>"; 
     } 

     echo $output; 
     } 

     //$this->load->view('content/'); 
    } 

Моя вторая выпадающее меню успешно заполняется в настоящее время.

Спасибо всем за помощь!

Смежные вопросы