我正在尝试使用AJAX将内容附加到我的div“this_div”。
HTML:
<a href='#' onclick="ajax('append?what=first',
['content'],'this_div')">click</a>
<div id='this_div'></div>
控制器:
def append():
if request.vars.what == "first":
something = "ABC"
else:
something = "DEF"
return "<script>jQuery('#this_div').append('"+something+"')</script>"
这会将“something”的内容加载到div,但它不会保留以前的内容。谁能解释为什么它会像那样表现呢?我是Python / Web2Py / AJAX组合的新手。
谢谢!
答案 0 :(得分:3)
问题是ajax()
函数本身会覆盖this_div
的内容,因为这是指定的目标(即,它用返回的<script>
元素替换DIV内容,然后返回将文本附加到DIV)。如果你想追加而不是覆盖,你可以通过Javascript来实现,但在这种情况下你需要指定“:eval”作为目标:
<a href='#' onclick="ajax('append?what=first', [], ':eval')">click</a>
<div id='this_div'></div>
控制器:
def append():
if request.vars.what == "first":
something = "ABC"
else:
something = "DEF"
return "jQuery('#this_div').append('%s');" % something
注意,在这种情况下不需要<script>
标记 - 只需返回要执行的Javascript。此外,如果您的append()
函数不使用“content”输入,ajax()
的第二个参数可能只是一个空数组(即[]
)而不是['content']
}。