0

CodeIgniter で AJAX を使用しています。

これが私のコードです。これは、SQL クエリが結果を返すときに機能します。クエリが空の場合、AJAX は何も返しません。

私のモデル:

function view_filter_by_cat($id){
$sql = "SELECT * FROM ".TBL_FILTER_OPTION." WHERE FID=?";
$query=$this->db->query($sql,$id);
if($query->num_rows()){
    foreach ($query->result() as $row){
        $result[] = $row;
    }           
    $query->free_result();
    return $result;         
}

AJAX コントローラー:

public function find_filters_options(){
    if($this->input->post('FID')){
        $fid = $this->input->post('FID');
        $filterList= $this->filter_option_model->view_filter_by_cat($fid);          
        if($this->filter_option_model->view_filter_by_cat($fid)){               
            echo (json_encode($filterList));
        }else{              
            echo '0';
        }
    }
}

Ajax 呼び出し:

$.ajax({
    type: "POST",
    url: '<?php echo site_url('admin/products/find_filters_options'); ?>',
    data: {
        <?php echo $this->security->get_csrf_token_name(); ?> : '<?php echo $this->security->get_csrf_hash(); ?>',
        FID: fid
    },
    success: function(data1){
        alert(data1);
    }
});

私の質問は、クエリが値を返さない場合です。成功メッセージにアクセスできません。戻り値が空の場合、値「0」を取得したい。

4

1 に答える 1

1

コントローラーを次のように変更できます。

public function find_filters_options(){
  $result = array();
    if($this->input->post('FID')){
        $fid = $this->input->post('FID');
        $filterList= $this->filter_option_model->view_filter_by_cat($fid);          
        if($this->filter_option_model->view_filter_by_cat($fid)){               
            $result["got_data"] = "yes";
            $result["data"] = $filterList;            
        }else{              
            $result["got_data"] = "no";
        }
    }
    else {
      $result["got_data"] = "no";
    }
    echo (json_encode($result));
}

そしてあなたのjquery ajax

$.ajax({
  type: "POST",
  url: '<?php echo site_url('admin/products/find_filters_options'); ?>',
  data : {<?php echo $this->security->get_csrf_token_name(); ?> : '<?php echo 
$this->security->get_csrf_hash(); ?>', FID : fid },
  dataType: "json",
  success: function(data1) {
    if(data1.got_data == "yes") {
        var data = data1.data; //get data from server here
    } 
    else {
       //dont have any data
       //show some appropriate message
    }
  }
});
于 2013-05-06T11:07:33.203 に答える