试图在codeigniter中创建一个简单的ajax请求

时间:2015-03-01 00:56:47

标签: ajax codeigniter codeigniter-2

我一直在搜索codeigniter ajax post问题上的各种答案,但无法找到我的问题的解决方案。我正在尝试制作一个简单的ajax请求来更改元素的innerHTML以进行测试,以查看是否ajax工作,如果我正确的方式。我分别测试$ .post函数,它的工作原理我的jquery语法没问题,但我认为问题在于url:在与codeigniter一起使用的函数中的属性。

查看/ header.php文件:

<?php
if(!empty($product)){
$pid=$product[0]['product_id'];

}
?>

<script>
$(document).ready(function(){
$('.add_to_basket').click(function(){
            $.ajax({
                type: 'POST',
                url: '<?=base_url()."cart_c/myfunk/".$pid?',
',
                data: { somedata: 123456 },
                success: function(data) {
                   $("#result").html(data);                    
                },
                error:function(){
                alert("error");
                }
            });


});
});
</script>

控制器/ products.php:

<?php
class Products extends CI_Controller{
    function __construct(){
        parent::__construct();
        $this->load->model('catalogue_model');
        $this->load->model('products_model');
        $this->load->model('basket_model');
    }

    function product($id){
    $kitties['cats']=$this->catalogue_model->get_categories();
    $data['product']=$this->products_model->get_product($id);
    $data['active_button']=$this->basket_model->activeButton($id);
        $this->load->view('header',$data);
        $this->load->view('sidebar',$kitties);
        $this->load->view('product',$data);
        $this->load->view('footer');
    }

}

?>

模型/ basket_model.php:

<?php
class Basket_model extends CI_Model{

    function activeButton($sess_id){
        if(isset($_SESSION['basket'][$sess_id])){
        $id=0;
        $label="<img src='".base_url()."images/remove.png' />";
        }else{
            $id=1;
            $label="<img src='".base_url()."images/add.png' />";
        }
        $out="<a href='#' class='add_to_basket' rel='".$sess_id."_".$id."'>".$label."</a>";
        return $out;
    }
}
?>

查看/ product.php:

<div class="contentwrap">
<div id="content_area">
<?php if(!empty($product)){
    foreach($product as $p){
        ?>
        <h1><?=$p['product_name']?></h1>
        <div id="product_image">
        <img src="<?=base_url()?>/images/<?=$p['image']?>" width="400" height="300" />
        </div>
        <div id="product_desc">
        <?=$p['description']?>
        <br><br>
        <?=$active_button?>


        </div>
        <?php

    }

}else{
    echo "Product unavailable";
}?>

<p id="result"></p>
</div>
</div>

控制器/ cart_c.php:

<?php
class Cart_c extends CI_Controller{

    function __construct(){
        parent::__construct();
        $this->load->model('catalogue_model');
        $this->load->model('products_model');
        $this->load->model('basket_model');
    }

    function myfunk($id){
        $some=$_POST['somedata'];
        echo $some;
    $kitties['cats']=$this->catalogue_model->get_categories();
    $data['product']=$this->products_model->get_product($id);
    $data['active_button']=$this->basket_model->activeButton($id);
        $this->load->view('header',$data);
        $this->load->view('sidebar',$kitties);
        $this->load->view('product',$data);
        $this->load->view('footer');
    }


}

?>

帮助任何人?

1 个答案:

答案 0 :(得分:0)

感谢@Phillip指出我正确的方向。我需要做的就是添加dataType:'html'

<script>
$(document).ready(function(){
$('.add_to_basket').click(function(){
            $.ajax({
                type: 'POST',
                url: '<?= base_url()."cart_c/myfunk/".$pid?>',

                data: { somedata: 123456 },
                dataType:'html',
                success: function(data) {
                   $("#result").html(data);                    
                },
                error:function(){
                alert("error");
                }
            });


});
});
</script>