Php Codeigniter中的购物车问题
我试图在CodeIgniter中创建一个购物车,我尝试了文档中提到的方法,它工作得非常完美。但是当我尝试在templetes中使用它时,它不起作用。在文档中,产品是硬编码的,但我从数据库中获取产品并使用ajax插入 我的插入代码JSPhp Codeigniter中的购物车问题,php,ajax,codeigniter,codeigniter-3,shopping-cart,Php,Ajax,Codeigniter,Codeigniter 3,Shopping Cart,我试图在CodeIgniter中创建一个购物车,我尝试了文档中提到的方法,它工作得非常完美。但是当我尝试在templetes中使用它时,它不起作用。在文档中,产品是硬编码的,但我从数据库中获取产品并使用ajax插入 我的插入代码JS $(document).ready(function(){ $('.add-to-cart').click(function(){ var product_id=$(this).data("productid");
$(document).ready(function(){
$('.add-to-cart').click(function(){
var product_id=$(this).data("productid");
var product_name=$(this).data("productname");
var product_price=$(this).data("productprice");
var quantity=$('#' + product_id).val();
if(quantity !='' && quantity>0)
{
$.ajax({
url:"<?php echo base_url();?>Cart/insert_product",
method:"POST",
data:{
product_id:product_id,product_name:product_name,product_price:product_price,quantity:quantity
},
success:function(data)
{
alert("Product added into cart");
// alert("Product added into cart and product info is: ID:" + product_id +'\n\r name:' + product_name + '\n\r price:' + product_price + '\n\r quantity:' + quantity);
// $('#' + product_id).val('');
}
});
}
else
{
alert("Please enter quantity");
}
});
});
当我点击“添加到购物车”按钮时,它会向我显示成功消息,但我非常确定产品没有插入购物车
我尝试访问产品的位置。
<!-- cart items -->
<div class="nav-cart-items">
<?php $i = 1;
if(!$this->cart->contents()){echo "no items found in cart";}
foreach ($this->cart->contents() as $items):
var_dump($items);
if(empty($items)){echo "cart is empty";}else{ echo "<h1>cart has data</h1>";?>
<div class="nav-cart-item clearfix">
<h4>Cart Details</h4>
<div class="nav-cart-img">
<a href="#">
<img src="cart_small_1.jpg" alt="">
</a>
</div>
<div class="nav-cart-title">
<a href="#">
<?php echo $items['name'];?>
</a>
<div class="nav-cart-price">
<span><?php echo $items['qty'];?> x</span>
<span><?php echo $this->cart->format_number($items['price']);?></span>
</div>
</div>
<div class="nav-cart-remove">
<a href="#"><i class="ui-close"></i></a>
</div>
</div>
<?php $i++; ?>
<?php } endforeach;?>
</div> <!-- end cart items -->
要测试内容并显示输出:
F:\xampp\htdocs\cart\application\views\single_item.php:3:
array (size=0)
empty
至于我,我认为我做错了什么,但不知道在哪里。。。
还请在CodeIgniter中建议cart解决方案,如文档中所示,cart库已折旧
非常感谢您对此提供的任何帮助。为什么在控制器中使用$data。 如果我没有错,那么您是单独发送值,而不是在“$data multiassociative array”中 尝试删除$data=array(),并使用以下代码:
$id = $this->input->post('product_id');
$quantity = $this->input->post('quantity');
$product_price = $this->input->post('product_price');
$product_name = $this->input->post('product_name');
PHP脚本,即:
不会在.js
文件中执行。因此,您的url是如何在评论中逐字显示在开发工具中的
您可以将js文件的内容移动到头模板中,使其驻留在视图中。或者您可以在js中将base\u url()
自己定义为var(var base\u url=)http://somesite.com/“;
)并像base\u url
一样使用它,或执行以下操作:
url:“/cart/insert\u product”
假设cart
不在控制器的子目录中
我通常以这种方式获取post数据并插入到表中:
$productId = $this->security->xss_clean($this->input->post('product_id'));
$quantity = $this->security->xss_clean($this->input->post('quantity'));
$productPrice = $this->security->xss_clean($this->input->post('product_price'));
$productName = $this->security->xss_clean($this->input->post('product_name'));
$data = array(
"id" => $productId,
"qty" => $quantity,
"price" => $productPrice,
"name" => $productName
);
$this->cart->insert($data);
打印(数据);在insert_product()中的数组之后。。。通过ajax添加项时,数组是否有数据?(应该能够在您的网络预览选项卡中看到这一点)除了
请求URL:http://localhost/cart/product/5 请求方法:获取状态代码:200确定远程地址:[:::1]:80引用方策略:降级时无引用缓存控制:无存储,无缓存,必须重新验证连接:保持活动内容类型:text/html;charset=UTF-8日期:2018年3月8日星期四03:55:30 GMT到期时间:1981年11月19日星期四08:52:00 GMT保持活动状态:超时=5,最大=100
打开开发工具(chrome)>网络选项卡。通过向购物车添加一个项目来提交ajax请求,您应该在列表末尾看到一个名为insert\u product
的项目。单击该按钮,将显示更多选项卡。一个会有响应数据,点击那个,你们会看到你们的数组。这是ajax调试101。现在显示数据,但url似乎不正确。。。它的表现像<代码>请求URL:http://localhost/cart/product/%3C?php%20echo%20base_url();?%3ECart/insert_product在js中运行(或者说不运行)php脚本没有问题请参考此问题了解更多详细信息->使用输入类获取post VAR与使用post VAR本身在功能上没有区别…请您指导我完成映像过程。。我正在尝试用项目显示图像,但它不起作用。请将堆栈上的问题链接给我,我来看看。(如果您还没有提出问题,请提出新问题)
$data=array(
array(
'id' => $_POST['product_id'],
'qty' => $_POST['quantity'],
'price' => $_POST['product_price'],
'name' => $_POST['product_name'])
);
$id = $this->input->post('product_id');
$quantity = $this->input->post('quantity');
$product_price = $this->input->post('product_price');
$product_name = $this->input->post('product_name');
$productId = $this->security->xss_clean($this->input->post('product_id'));
$quantity = $this->security->xss_clean($this->input->post('quantity'));
$productPrice = $this->security->xss_clean($this->input->post('product_price'));
$productName = $this->security->xss_clean($this->input->post('product_name'));
$data = array(
"id" => $productId,
"qty" => $quantity,
"price" => $productPrice,
"name" => $productName
);
$this->cart->insert($data);