我正在尝试编写一个控制器方法和一个相应的视图,它将使用 Ajax 在 web2py 上调用控制器。这个想法是在数据库上做一个小的更新,并使用 Ajax 在目标 div 上返回一个简单的更新消息。下面是控制器方法:
def deleteajax():
recid1 = request.vars.recid
reptype1 = request.vars.reptype
if recid1 == None:
out = 'Missing Param : recid'
return out
if reptype1 == None:
reptype1 = 'pr'
if reptype1 == 'pr':
row = db2(db2.prs_mailed.id==recid1).select().first()
return str(row.id)
elif reptype1 == 'tb':
row = db2(db2.tbs_mailed.id==recid1).select().first()
else:
return 'Please provide the parameter : rep'
if row['action'] == 'D':
out = 'Already deleted'
return out
else:
row.update_record(action='D')
out = 'Deleted Successfully!'
return out
这就是我从视图中调用相同的方式:
<form>{{
response.write('<input type="hidden" name="recid" value="'+str(response._vars['prs']['id'][k])+'"/>',escape=False)}}
<input type ='button' name="del" value = "D" onclick="ajax('deleteajax', ['reid'], 'target')" />
<div id="target"></div>
</form>
我已经使用 POST 调用单独测试了控制器,并且可以正常工作。甚至 AJAX 调用也能正常工作,并在目标 div 上显示错误消息,例如“Missing Param:recid”。我什至尝试在完成每个语句后修改控制器以显示更多消息。但是,发布任何数据库操作后,不会执行来自控制器的命令,也不会在目标 div 上显示任何内容。我哪里错了?