【问题标题】:Refresh Session and Array without refreshing page刷新会话和数组而不刷新页面
【发布时间】:2024-05-16 06:55:01
【问题描述】:

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

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

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

我正在使用 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"); ?>

它们是我可以在不刷新页面body 的情况下刷新pageheader.php 的一种方式。

【问题讨论】:

  • 我会说,用 Ajax 方式来做。
  • 为什么不调用done 方法并在其中更改购物车HTML。
  • @Fred-ii- +1 for the sick rhyme
  • @Orangepill 谢谢,非常感谢。这不是我最好的 :::ELVIS::: 模仿,但我的朋友们喜欢它 ;-)
  • @OP --- 似乎有人问了类似的问题。你应该sit in on this one

标签: php arrays session


【解决方案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");
    });

试试这个方法希望它能解决你的问题。

【讨论】: