Dynamically refresh the php session with jQuery

6

Well, I have the function below that, with JQuery, I update the display values of the cart values.

Everything works:

  function add(_quant, _preco, _total, _estoque) {
      quantidade = parseInt($("#"+_quant).val());
      estoque = parseInt($("#"+_estoque).val());
      preco = parseFloat($("#"+_preco).val());

      novaQuantidade = quantidade + 1;

      if(novaQuantidade <= estoque) {         
          if(novaQuantidade == 0) {
              alert("Quatidade não por ser 0");
          } else {
              total = novaQuantidade * preco;                 
              $("#"+_quant).val(novaQuantidade) ;
              $("#"+_total).html(total.toFixed(2));
              $(".totalCarrinho").html(total.toFixed(2));
              $(body).load('_required/sessaoCarrinho.php?idProduto=' + _quant + '&novaQuantidade=' + novaQuantidade);
          }
      }  else {
              alert("Quatidade escolhida maior que estoque");
      }
  }

The problem is that I'm not even able to update in the php session.

I'm trying like this:

$(body).load('_required/sessaoCarrinho.php?idProduto=' + _quant + '&novaQuantidade=' + novaQuantidade);

And, in the php like this:

  $idProduto = $_GET["idProduto"];
  $novaQuantidade = $_GET["novaQuantidade"];

  foreach ($_SESSION["carrinho"] as $key=>$produtoC) {
       if($produtoC[$idProduto] == $novoProduto->getIdProdutos()) {
           $achou = true;
           $chave = $key;
           $estoque = $novoProduto->getEstoque();
           break;                
       }
   }

   if($achou == true) {
       if ($estoque > $_SESSION["carrinho"][$chave]["quantidade"]) {
          $_SESSION["carrinho"][$chave]["quantidade"] = $novaQuantidade;
       }       
   }

But the session is not being updated.

What am I doing wrong?

    
asked by anonymous 02.06.2016 / 21:25

2 answers

0

Try this way

JavaScript:

function add(_quant, _preco, _total, _estoque) {
    quantidade = parseInt($("#"+_quant).val());
    estoque = parseInt($("#"+_estoque).val());
    preco = parseFloat($("#"+_preco).val());

    novaQuantidade = quantidade + 1;

    if(novaQuantidade <= estoque) {         
        if(novaQuantidade == 0) {
            alert("Quatidade não por ser 0");
            }
            else {
                total = novaQuantidade * preco;                 
                $("#"+_quant).val(novaQuantidade) ;
                $("#"+_total).html(total.toFixed(2));
                $(".totalCarrinho").html(total.toFixed(2));
                //
                $("#div_vazia_qualquer").load('_required/sessaoCarrinho.php',{
                    idProduto:_quant, 
                    novaQuantidade:novaQuantidade}, function(resposta){
                        alert(resposta);
                    });
            }
        }
        else {
            alert("Quatidade escolhida maior que estoque");
        }
    }
}

PHP:

<?php
$idProduto = $_POST["idProduto"];
$novaQuantidade = $_POST["novaQuantidade"];

foreach ($_SESSION["carrinho"] as $key=>$produtoC) {
   if($produtoC[$idProduto] == $novoProduto->getIdProdutos()) {
        $achou = true;
        $chave = $key;
        $estoque = $novoProduto->getEstoque();
        break;                
   }
}

if($achou == true) {
   if ($estoque > $_SESSION["carrinho"][$chave]["quantidade"]) {
      $_SESSION["carrinho"][$chave]["quantidade"] = $novaQuantidade;
   }       
}
    
02.06.2016 / 21:45
0

You can not guess. See what the load () request is returning. In your web browser go to inspect element, it will have a tab called network (network) in it filter the ajax requests and see what was sent to the server and what was returned as a response. This varies from browser to browser. Here you can see if any syntax errors are occurring in php;

    
02.06.2016 / 22:56