web2py:链接执行函数而不导航到不同的页面(回调?)

时间:2013-12-15 04:21:28

标签: python ajax web-applications web2py

使用web2py(2.8.2-stable + timestamp.2013.11.28.13.54.07),如何在View中构建一个执行函数但不会离开当前页面的链接?

web2py OnLine book表示,对于View中使用的内置帮助器A()的调用:'而不是_href,您可以使用回调参数传递URL。 。 。按下链接的效果将是ajax调用" myaction"而不是重定向'。 (我对'重定向的理解是将浏览器导航到另一个页面)。但是,web2py View源(在循环内):

{{=A('why does this callback redirect?', callback=URL('PlayAnAlbum2', vars = dict(album_folder = album_folder, type = 'artists')))}}

执行所需的功能,但也会重定向到指定功能的视图或包含“无”的页面。如果该功能没有返回任何内容。

我想点击链接只执行一个函数,而不是加载一个不同的视图(因此不需要视图,我希望函数不需要返回任何内容,除非该函数是否遇到任何错误)。生成的源的示例如下:

<a data-w2p_disable_with="default" data-w2p_method="POST" href="/AlbumBrowser/default/PlayAnAlbum2?album_folder=Jaga+Jazzist%2F2003+The+Stix&amp;type=artists" id="10aa76bd-c4bf-4701-a0da-1ebfed7847cc">why does this callback redirect?</a>

但是我曾经期待过类似下面的内容(我根据this question中的代码松散地做了这些,所以可能没有意义):

<a href="#null" onclick="ajax('/AlbumBrowser/default/PlayAnAlbum2',['album_folder','type'],None);return false">why does this callback redirect?</a>

我可以确认{{include 'web2py_ajax.html'}}位于布局标题中,<script src="/AlbumBrowser/static/js/web2py.js" type="text/javascript"></script>位于生成的页面源中。

1 个答案:

答案 0 :(得分:1)

正如问题和the web2py book中所述,请在callback=URL()中使用_href=URL()代替A()

这绝对适用于web2py 2.8.2。