刷新会话和数组而不刷新页面

时间:2013-08-26 23:17:14

标签: php arrays session

希望这不是一个愚蠢的问题。

我有一个电子商务网站,当用户将商品添加到购物车时。在页面顶部,我有这个函数来计算数组,然后向用户显示购物车中有多少商品。

然后我将总购物车价格存储在会话中,以便在页面顶部显示。

我正在使用Jquery将商品添加到购物车,但问题是您必须刷新页面才能看到总购物车商品和购物车总价格(在页面顶部。不是购物车页面。所以不要混淆它。)

我使用location.reload();在Jquery中重新加载,但这会刷新自己的页面。

要显示用户在购物车中的商品数量,我执行了count

<?php echo count($_SESSION["cart_array"])?>

并且总项目价格回显会话

<?php echo $_SESSION['smallcart'];?>

如何在不刷新页面的情况下使用PHP或任何其他表单刷新countsmallcart会话。

那些在我的pageheader.php

中 我是谁 <?php include realpath(dirname(__FILE__)."/../../pageheader.php"); ?>

这是我可以刷新pageheader.php而不刷新页面body的方式。

1 个答案:

答案 0 :(得分:1)

您可以使用ajax执行此操作,如下例所示。 首先,我们需要一个php文件,它将创建这些会话并与ajax通信。我们调用此文件ajax_cart.php。可能有以下代码。

    $new_cart_item=$_REQUEST['new_cart_item'];
$new_total=$_REQUEST['new_total'];
$cart_array=array();
//for cart arrays
$item_count=0;
if(isset($_SESSION['cart_array'])){
$cart_array=$_SESSION['cart_array'];
$cart_array[]=$_REQUEST['new_cart_item'];
$_SESSION['cart_array']=$cart_array;
$item_count=count($_SESSION["cart_array"]);
else{
$cart_array[]=$_REQUEST['new_cart_item'];
$_SESSION['cart_array']=$cart_array;
$item_count=count($_SESSION["cart_array"]);
}

//for smart cart
$total_price=0;

$_SESSION['smartcart']=$_REQUEST['new_total'];
$total_price=$_SESSION['smartcart'];
$data='{"cartcount":"'.$item_count.'","totalprice":"'.$total_price.'"}';
echo $data;

然后我们可以添加ajax来更新并从该文件中获取结果。来自以下代码。

//ajax side
function my_ajax(url,data,method,datatype){
    $.ajax({
    type: method,
    url: url,
    data: data,
    dataType: datatype,
    success: function(data) {
    ajaxResultHandler(data,datatype);
    },
    error: function(error, status, desc) {
        console.log(error);

    }
});
}

function ajaxResultHandler(data,datatype){
//here you can put any function to use the given data
var cart_count=data.cartcount;
var total_price=data.totalprice;
$("div.cart_count").html(cart_count); //your element you display item count
$("div.total_price").html(total_price); //your element you display total price.
}

以下是该ajax函数的用法。

$('.add_to_cart').live("click",function(e) {
    e.preventDefault();

    //get required data from elements or form. perform addation of price.
    var total_price=0; //put calculated new total price
    var added_item=""; //put the new added item
    //call the ajax function
    my_ajax("ajax_cart.php",{"new_total":total_price,"new_cart_item":added_item},"post","json");
    });

尝试这种方法希望它能解决您的问题。