我在控制器中使用LOAD()如下:
def showResult():
msg=''
result=LOAD('ResController','res.load',ajax=True)
if 'pass' in result:
msg='Congratulations, you've passed'
response.flash= msg
我发现的是: 当调用load()时(以及在它从res.load成功接收响应之前),它通过" loading ..."结果变量反过来影响if条件。
我的问题是: 有没有办法让load()成功收到响应后if条件有效?
答案 0 :(得分:1)
您误解了LOAD
的工作原理。它只是一个HTML帮助程序,它生成一个HTML div,其中包含在包含页面加载时在浏览器中触发Javascript的特殊属性(Javascript对指定的操作进行Ajax调用,然后返回对浏览器的响应)。它不会在您的控制器代码中执行HTTP请求并在那里返回响应,因此您无法对生成LOAD
帮助程序的控制器中的Ajax响应执行任何操作。
注意,LOAD
返回DIV
帮助程序,HTML帮助程序就其组件的列表行事。由于DIV
是通过文本"正在加载..."启动的,因此它就像是['Loading...']
之类的列表一样。因此,当您执行if 'pass' in result
时,条件将始终为False
。
要获得进一步的帮助,您可能必须明确说明工作流程应该是什么以及ResController / res中发生了什么。也许该操作是需要将Flash消息返回给浏览器的操作。