Web2Py中ajax和会话变量的问题

时间:2014-12-31 18:16:41

标签: javascript python ajax session web2py

我正在开发一个Web2Py中的应用程序,它包含一些电子商务。有一个控制器和页面链接是localhost:8000 / topranchos / produto,与产品,topranchos是应用程序。

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

The image is in this link

点击“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是空的。

我该如何修理?我尝试使用当然是Web2Py书的cookie,但是我对Web2Py很不满意而且还没有成功:/

谢谢你!

1 个答案:

答案 0 :(得分:0)

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

session.carrinho = []

应该是这样的:

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