0

我是代码点火器的新手。在这里,我正在使用购物车进行产品结帐。当我将产品添加到购物车时,它适用于前三种产品,在添加任何产品后视为第四种产品。如果任何产品在三个产品之后添加到购物车,它将替换现有的第四个产品。但购物车上只显示前三个产品,第四个不显示,而且我不能在购物车上添加超过四个产品,我正在使用 jquery ajax 进行购物车更新

jquery ajax 代码

$('.addcart').click(function(){
    var proid=$(this).attr('id');           
    $.post('<?php echo base_url()?>productajax',{typ:'addtocart',proid:proid},function(data){           

    })
    return false;
})

product add to cart code



 $proid=$this->input->post('proid');
                    $this->db->where('pro_id',$proid);
                    $data=$this->db->get('product')->result();
                    foreach ($data as $pro)
                    {
                        $proname=$pro->pro_name;
                        $price=$pro->s1price;

                        $proimg=$pro->image_name;
                        $nwt=$pro->case_netweight;
                        $gwt=$pro->case_grossweight;
                        $cbm=$pro->cbm;
                    }

                    $propriceinr =round($price + round(($price * $this->session->userdata('user_margin'))/100,2));          

                    $dat = array(
                   'id'      => $proid,
                   'qty'     => 1,
                   'price'   => $propriceinr,
                   'name'    => $proname,
                   'options' => array('cbm' => $cbm, 'nwt' => $nwt,'gwt'=>$gwt,'image' => $proimg ,'price'=>$price,)
                );              
                    $this->cart->insert($dat);

配置文件

$config['sess_cookie_name']     = 'ci_session';
$config['sess_expiration']      = 7200;
$config['sess_expire_on_close'] = FALSE;
$config['sess_encrypt_cookie']  = FALSE;
$config['sess_use_database']    = FALSE;
$config['sess_table_name']      = 'ci_sessions';
$config['sess_match_ip']        = FALSE;
$config['sess_match_useragent'] = TRUE;
$config['sess_time_to_update']  = 300;

$config['csrf_protection'] = FALSE;
$config['csrf_token_name'] = 'csrf_test_name';
$config['csrf_cookie_name'] = 'csrf_cookie_name';
$config['csrf_expire'] = 7200;

我不知道产品购物车为什么在插入三个产品后不更新。任何人都给我这个问题的指导。提前感谢

4

2 回答 2

2

请设置

$config['sess_use_database'] = FALSE;

$config['sess_use_database'] = TRUE;你的config.php.

现在您的产品详细信息被保存在最大限制为4kb的cookie中。 通过启用.
$config['sess_use_database'] = TRUE;

此功能可让您在数据库表中插入您的信息,即:

$config['sess_table_name'] = 'ci_sessions';.

希望这对你有用

如果你没有ci_sessions表,这里是查询:

 CREATE TABLE `ci_sessions` (
 `session_id` varchar(40) NOT NULL DEFAULT '0',
 `ip_address` varchar(16) NOT NULL DEFAULT '0',
 `user_agent` varchar(50) NOT NULL,
 `last_activity` int(10) unsigned NOT NULL DEFAULT '0',
`user_data` text NOT NULL,
PRIMARY KEY (`session_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
于 2013-06-20T12:09:32.557 回答
0

尝试在 application/config/config.php 中禁用 csrf 保护

$config['csrf_protection']  = FALSE;

然后,如果 ajax 调用开始工作,再次启用它并将 ci_csrf_token 变量添加到 ajax 调用。

于 2013-06-20T10:10:00.863 回答