View中的回调方法无法评估

时间:2014-05-01 15:20:26

标签: jquery web2py

在我的应用中,我有一个视图,其中包含此行作为表格的一部分:

<td>{{=A('Callback test', callback=URL('jquery_test'), target=':eval')}}</td>

jquery_test是一种执行此操作的方法:

def jquery_test():
    return "jQuery('#option_list').html('Example jQuery string');"

这适用于web2py的早期版本:字符串“Example jQuery string”已正确注入视图的option_list divison。

今天早上,我意识到我在web2py上落后了,我升级到2.9.5稳定。现在,上面的代码重定向返回的字符串:我得到一个带有“jQuery('#option_list')的空白视图.html('示例jQuery字符串');”在上面。该页面的URL是

"http://127.0.0.1:8000/myApp/default/jquery_test"

我不能说升级改变了这种行为,因为我从2.2-something变为2.9.5。有什么想法改变了以及如何纠正它?

感谢。

使用其他一些信息编辑...我已根据Anthony的建议更新了web2py.js(以及其他.js和.css文件)。

在视图文件中使用此回调:

<td>{{=A('Callback test', callback=URL('jquery_test'), target='options_list')}}</td>

正确调用jquery_test方法并填充DIV id ='options_list'

使用此回调:

<td>{{=A('Callback test', callback=URL('jquery_test'), target=':eval')}}</td>

不会调用jquery_test方法。它根本不会执行。

我希望这能提供一些额外的线索。

1 个答案:

答案 0 :(得分:1)

升级框架时,还必须升级应用程序的/static文件夹中的web2py.js文件,因为这是框架代码的一部分,并且需要JavaScript / Ajax功能。工作正常。

更新:查看旧代码和新代码,看起来实现已更改。 target=':eval'曾经工作(由于使用ajax()函数的幕后实现),但这不是一个记录的功能。

作为替代方案,您应该将JavaScript代码添加到response.js,而不是让Ajax操作返回要评估的JavaScript,它将在客户端上执行。