【问题标题】:Problems with ajax and session variable in Web2PyWeb2Py 中 ajax 和会话变量的问题
【发布时间】:2015-01-01 03:04:33
【问题描述】:

我正在开发一个包含小型电子商务的 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>

这是对动作 default/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 请求收到的项目,但是当我添加其他项目时,列表为空。当我点击 carrinho 的页面时,显示 session.carrinho 的信息,var 为空。

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

谢谢!

【问题讨论】:

    标签: javascript python ajax session web2py


    【解决方案1】:

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

    session.carrinho = []
    

    应该是这样的:

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

    【讨论】:

    • 谢谢,新年快乐 :)
    猜你喜欢
    • 2012-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-23
    • 2014-12-08
    相关资源
    最近更新 更多