我需要你的帮助.. 在我的视图文件中,我使用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');
}
当我更改控制器中的回显警报以回显字符串时,我的屏幕上没有任何内容。
答案 0 :(得分:0)
在Codeigniter
中,我们需要先加载Models
,Helpers
和Libraries
才能使用它们。
在调用模型方法
之前,在代码中添加以下行$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/');
}
我的第二个下拉菜单现已成功填充。
感谢大家的帮助!