【问题标题】:web2py - Controller function isn't called when using anchor tag callbackweb2py - 使用锚标记回调时不调用控制器函数
【发布时间】:2013-04-30 19:16:24
【问题描述】:

当用户访问杂志页面时,应该会出现一个按钮,如果该用户已经登录,则该按钮将允许当前登录的用户订阅特定杂志。匿名用户不应看到该按钮。

当用户登录时,我已经获得了显示按钮,但是单击该按钮不会调用我的控制器功能。

如果这是控制器功能:

@auth.requires_login()
def subscribe():
    mag_id = request.args(0, cast=int)
    db.subscribe.insert(magazine=mag_id, subscriber=auth.user.id)

这是视图的一部分:

<div>
    {{=magazine.title}}
    {{=magazine.description}}
</div>

<div>
{{ if auth.is_logged_in():}}
    {{=A('subscribe', _class="btn_subscribe", callback=URL("subscribe", args=magazine.id))}}
{{pass}}
</div>

&lt;a&gt; 按钮显示如下:

<a href="#null" onclick="ajax('/myapp/default/subscribe/3',[],'me');return false">subscribe</a>

并且永远不会调用控制器函数,并且永远不会订阅用户。

【问题讨论】:

  • 您的 A() 助手生成以下 HTML:&lt;a class="btn_subscribe" href="#null" onclick="ajax(&amp;#x27;/test/default/subscribe/3&amp;#x27;,[],&amp;#x27;&amp; #x27;);return false"&gt;subscribe&lt;/a&gt;。上面输出中的“我”来自哪里?无论如何,你确定 web2py.js 已经加载了吗?
  • @Anthony 我不确定“我”来自哪里。它似乎是由 web2py 自动生成的。您对 web2py.js 丢失的看法是正确的。我添加了它,现在正在调用控制器。你能回答一下,我会标记为正确的吗?
  • @Anthony 有没有办法在点击订阅按钮后刷新页面?这样锚按钮文本将更改为“您已订阅”以向用户表明该用户现在已订阅?目前我必须手动刷新整个页面才能看到更改。
  • 如何在 A() 中包含另一个跨度

标签: python web2py


【解决方案1】:

正如 Anthony 所建议的,添加 web2py.js 是解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-12
    • 2011-02-16
    • 2015-07-30
    • 1970-01-01
    • 2020-05-15
    • 2017-06-22
    • 1970-01-01
    相关资源
    最近更新 更多