控制器中的Codeigniter方法不调用模型

时间:2015-08-17 10:27:55

标签: jquery html ajax codeigniter

我需要你的帮助.. 在我的视图文件中,我使用ajax向控制器请求数据。 这是ajax代码:

<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');
    }

当我更改控制器中的回显警报以回显字符串时,我的屏幕上没有任何内容。

2 个答案:

答案 0 :(得分:0)

Codeigniter中,我们需要先加载ModelsHelpersLibraries才能使用它们。

在调用模型方法

之前,在代码中添加以下行
$this->load->model('preference_model');

您还可以在代码中使用备用名称

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

答案 1 :(得分: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/');
    }

我的第二个下拉菜单现已成功填充。

感谢大家的帮助!