Web2Py 中的 ajax 和会话变量的问题

Problems with ajax and session variable in Web2Py

本文关键字:变量 问题 会话 中的 ajax Web2Py      更新时间:2023-09-26

我正在Web2Py中开发一个应用程序,其中包含一个小电子商务。有一个控制器和页面,链接是本地主机:8000/topranchos/produto,与产品,是topranchos是应用程序。

在页面产品中,有一个这样的产品列表:

图片在此链接中

当单击"Adicionar ao carrinho"按钮时,将执行javascript函数:

<script>
    function adicionarCarrinho(prod, qtde) {
        quantidade = document.querySelector(qtde).value
        console.log(quantidade)
      if(quantidade > 0) {
          $.get("{{=URL(f="adicionarCarrinho")}}", {produto: prod, qtde: quantidade} )
            .done(function( data ) {
                console.log (data)
                var atual =document.querySelector(".badge-carrinho").innerHTML;
                document.querySelector(".badge-carrinho").innerHTML =
                parseInt(quantidade) + parseInt(atual);
                alert("Adicionado ao carrinho com sucesso");
                });
        }
        else alert("Selecione a quantidade de itens deste produto que você deseja");
    }
</script>

它要求操作默认/adicionarCarrinho:

def adicionarCarrinho():
if request.vars:
    session.carrinho.append(
    #{'produto':db(db.produto.id == request.vars['produto']).select(),
    {'produto':int(request.vars['produto']),
    'quantidade':int(request.vars['qtde'])}
    )
    print "----------"
    print session.carrinho
    return str("OK")

其中session.carrinho有一个在 db.py 模型上声明的列表:

#carrinho
session.carrinho = []

在终端上,命令print session.carrinho打印ajax请求收到的项目,但是当我添加其他itens时,列表是空的。当我点击 carrinho 的页面时,它显示了 session.carrinho 的信息,var 是空的。

我该如何修复?我尝试使用cookie当然是Web2Py书,但我在Web2Py上傻瓜,还没有成功:/

谢谢!

模型文件在每个请求上执行,因此您将session.carrinho重置回每个请求的空列表。相反,在模型中,这:

session.carrinho = []

应该是这样的:

session.carrinho = [] if session.carrinho is None else session.carrinho