在我的应用中,我有一个视图,其中包含此行作为表格的一部分:
<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方法。它根本不会执行。
我希望这能提供一些额外的线索。
答案 0 :(得分:1)
升级框架时,还必须升级应用程序的/static
文件夹中的web2py.js文件,因为这是框架代码的一部分,并且需要JavaScript / Ajax功能。工作正常。
更新:查看旧代码和新代码,看起来实现已更改。 target=':eval'
曾经工作(由于使用ajax()
函数的幕后实现),但这不是一个记录的功能。
作为替代方案,您应该将JavaScript代码添加到response.js
,而不是让Ajax操作返回要评估的JavaScript,它将在客户端上执行。